te')); return $arr; } /* 遍历用户所有主题 * @param $uid 用户ID * @param int $page 页数 * @param int $pagesize 每页记录条数 * @param bool $desc 排序方式 TRUE降序 FALSE升序 * @param string $key 返回的数组用那一列的值作为 key * @param array $col 查询哪些列 */ function thread_tid_find_by_uid($uid, $page = 1, $pagesize = 1000, $desc = TRUE, $key = 'tid', $col = array()) { if (empty($uid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('uid' => $uid), array('tid' => $orderby), $page, $pagesize, $key, $col); return $arr; } // 遍历栏目下tid 支持数组 $fid = array(1,2,3) function thread_tid_find_by_fid($fid, $page = 1, $pagesize = 1000, $desc = TRUE) { if (empty($fid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('fid' => $fid), array('tid' => $orderby), $page, $pagesize, 'tid', array('tid', 'verify_date')); return $arr; } function thread_tid_delete($tid) { if (empty($tid)) return FALSE; $r = thread_tid__delete(array('tid' => $tid)); return $r; } function thread_tid_count() { $n = thread_tid__count(); return $n; } // 统计用户主题数 大数量下严谨使用非主键统计 function thread_uid_count($uid) { $n = thread_tid__count(array('uid' => $uid)); return $n; } // 统计栏目主题数 大数量下严谨使用非主键统计 function thread_fid_count($fid) { $n = thread_tid__count(array('fid' => $fid)); return $n; } ?>javascript - React component function returning JSX causes error when used in render method of ES6 class React component - Stack
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - React component function returning JSX causes error when used in render method of ES6 class React component - Stack

programmeradmin4浏览0评论

I have a function that returns JSX as shown below:

  function struct(locals) { 
    return (
      <View style={fieldsetStyle}>
        {label}
        {error}
        {rows}
      </View>
    );
}
label, error, and rows are functions that also return JSX.

I call this function within the render method of an ES6 class ponent

class Component extends React.Component {
  render() {
    const locals = this.getLocals();

    return struct(locals); 
  }
}

When I run the code, I get error

Element type is invalid: expected a string (for built-in ponents) or a class/function (for posite ponents) but got: object. Check the render method of Struct

How can I get the result from struct function to render as return value of Component class render?

I have a function that returns JSX as shown below:

  function struct(locals) { 
    return (
      <View style={fieldsetStyle}>
        {label}
        {error}
        {rows}
      </View>
    );
}
label, error, and rows are functions that also return JSX.

I call this function within the render method of an ES6 class ponent

class Component extends React.Component {
  render() {
    const locals = this.getLocals();

    return struct(locals); 
  }
}

When I run the code, I get error

Element type is invalid: expected a string (for built-in ponents) or a class/function (for posite ponents) but got: object. Check the render method of Struct

How can I get the result from struct function to render as return value of Component class render?

Share Improve this question asked Nov 10, 2017 at 21:43 Tom AthensTom Athens 731 gold badge1 silver badge4 bronze badges 1
  • 2 Do you have a good reason for having this as a separate function? Why you don't turn it into a LocalsView ponent and render it passing locals as prop? – Rafael Quintanilha Commented Nov 10, 2017 at 21:46
Add a ment  | 

2 Answers 2

Reset to default 8

You are returning a react ponent, not a react element. The difference is an element describes how to create the ponent, where as the ponent is the instanced class. You need to return React.createElement(Struct);, or return <Struct/>. Also, your locals variable will actually be a props object. So your code should look like this:

function struct({locals}) { 
    return (
      <View style={fieldsetStyle}>
        {label}
        {error}
        {rows}
      </View>
    );
}

class Component extends React.Component {
  render() {
    const locals = this.getLocals();

    return <Struct locals={locals}/>; 
  }
}

First you have to import that function as an ES module into your class ponent.

import { struct } from '..path/to/struct';

Then your render function which should return some JSX which is syntactic sugar. You should place your intermediary variables before the return statement in your render method. It's safer to wrap it inside a div if you have multiple elements.

  render() {
    const locals = this.getLocals();
    return (
      <div>
        struct(locals);
      </div>
    );
  }

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论