React.js:将嵌套属性传递给 React.createElement
React.js: Passing nested props into React.createElement
我有以下形式的代码
props = { user: {userattr1: 1, userattr2: 2}};
var element = React.createElement(MyReactClass, props);
即,其中 props 是一个 嵌套对象 。当我尝试编译上面的代码时出现错误:
警告:在作为子对象传递之前,任何对键控对象的使用都应包装在 React.addons.createFragment(object) 中。
我一直在网上查找,嵌套对象似乎完全可以作为 props。我该如何解决我的错误?
编辑:MyReactClass
看起来像这样:
var MyReactClass = React.createClass({
render: function () {
<div>{this.props.user}</div>
}
})
我认为这不是问题,您遇到的问题与作为道具的嵌套对象有关。这是一个例子:
var Hello = React.createClass({
render: function() {
return <div>Hello {this.props.user.name}</div>;
}
});
var props = { user: {name: "World"}};
React.render(React.createElement(Hello, props), document.getElementById('container'));
更有可能的是,您的问题与您如何设置子组件的键有关。但是,如果不查看整个代码,就很难分辨。
这是对creeateFragment
函数的link,可能对你有帮助。 https://facebook.github.io/react/docs/create-fragment.html
如果您使用的是 JSX,您还可以通过像这样构建对象来将嵌套对象作为 prop 传递:
<HelloWorldClass user={{name:'Kyle'}} />
堆栈代码段中的语法示例
// function component syntax
function HelloWorldFunc(props) {
return (
<div>Hello, {props.user.name} </div>
);
}
// class component syntax
class HelloWorldClass extends React.Component {
render() {
return (
<div >
Hello, {this.props.user.name}
</div>
);
}
}
// createElement syntax
const helloCreate = React.createElement(HelloWorldFunc, {user:{name:'Kyle'}});
// JSX syntax
const helloJSX = <HelloWorldClass user={{name:'Kyle'}} />
ReactDOM.render(
<div>
{helloCreate}
{helloJSX}
</div>
,document.querySelector("#root"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<div id="root"></div>
我有以下形式的代码
props = { user: {userattr1: 1, userattr2: 2}};
var element = React.createElement(MyReactClass, props);
即,其中 props 是一个 嵌套对象 。当我尝试编译上面的代码时出现错误:
警告:在作为子对象传递之前,任何对键控对象的使用都应包装在 React.addons.createFragment(object) 中。
我一直在网上查找,嵌套对象似乎完全可以作为 props。我该如何解决我的错误?
编辑:MyReactClass
看起来像这样:
var MyReactClass = React.createClass({
render: function () {
<div>{this.props.user}</div>
}
})
我认为这不是问题,您遇到的问题与作为道具的嵌套对象有关。这是一个例子:
var Hello = React.createClass({
render: function() {
return <div>Hello {this.props.user.name}</div>;
}
});
var props = { user: {name: "World"}};
React.render(React.createElement(Hello, props), document.getElementById('container'));
更有可能的是,您的问题与您如何设置子组件的键有关。但是,如果不查看整个代码,就很难分辨。
这是对creeateFragment
函数的link,可能对你有帮助。 https://facebook.github.io/react/docs/create-fragment.html
如果您使用的是 JSX,您还可以通过像这样构建对象来将嵌套对象作为 prop 传递:
<HelloWorldClass user={{name:'Kyle'}} />
堆栈代码段中的语法示例
// function component syntax
function HelloWorldFunc(props) {
return (
<div>Hello, {props.user.name} </div>
);
}
// class component syntax
class HelloWorldClass extends React.Component {
render() {
return (
<div >
Hello, {this.props.user.name}
</div>
);
}
}
// createElement syntax
const helloCreate = React.createElement(HelloWorldFunc, {user:{name:'Kyle'}});
// JSX syntax
const helloJSX = <HelloWorldClass user={{name:'Kyle'}} />
ReactDOM.render(
<div>
{helloCreate}
{helloJSX}
</div>
,document.querySelector("#root"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<div id="root"></div>