javascript - 在ES6类React组件的render方法中使用返回JSX的React组件函数报错

标签 javascript reactjs render jsx

我有一个返回 JSX 的函数,如下所示:

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

我在 ES6 类组件的 render 方法中调用了这个函数

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

    return struct(locals); 
  }
}

当我运行代码时,出现错误

元素类型无效:应为字符串(对于内置组件)或 类/函数(对于复合组件)但得到:对象。检查渲染 Struct

的方法

如何从 struct 函数获取结果以作为 Component 类 render 的返回值进行渲染?

最佳答案

您返回的是 React 组件,而不是 React 元素。不同之处在于元素描述了如何创建组件,而组件是实例化类。你需要 return React.createElement(Struct); , 或 return <Struct/> .另外,你的 locals变量实际上是一个 props目的。所以你的代码应该是这样的:

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}/>; 
  }
}

关于javascript - 在ES6类React组件的render方法中使用返回JSX的React组件函数报错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47231559/

相关文章:

javascript - 在 native 底部选项卡导航器中更改屏幕时如何更改图标和文本的颜色?

angularjs - 倒计时组件 : how to prevent re-rendering in Angular2?

javascript - 检查外部js文件是否已经加载

javascript - 以Redux状态: reflection of API object vs.简化形式状态存储数据

reactjs - 如何在 onSnapshot() 中使用 orderBy() 以便我可以根据时间戳对文档进行排序?

javascript - 如何在react.js中使用onClick?

python - Django:像 LoginView 这样的通用表单在哪里渲染函数字典填充以及如何更改它

C++ MFC MDI View 渲染

Javascript - object.offsetTop 和 .offsetLeft 给出 0

javascript - 如何通过单击文本输入来显示 Windows 7/8 中的屏幕键盘?