我如何将多个状态传递给setState
?这是一个例子:
getInitialState: function() {
return {
list: [],
newFilm: {},
searchWord: '',
searchDetails: {}
}
},
componentDidMount: function() {
this.setState({
searchDetails:someData,
newFilm: 'I am first text',
})
}
问题是:
该示例语法正确吗?
设置状态的方式不存在语法问题,但初始化状态的方式可能存在问题。您已将 newFilm 初始化为对象状态,但是当您设置其状态时,您将给出一个字符串。所以假设你尝试将其渲染为{this.state.newFilm}
它会给你一个错误
对象作为 React 子对象无效(找到:带有键 {} 的对象)。
正如您在下面的代码片段中看到的,自从第一次渲染组件时,它会看到一个对象,而后来它只是一个字符串。
要解决此问题,请尝试初始化您的状态newFilm
as ''
或者在尝试渲染时采取预防措施,即检查其中包含某些数据的位置,然后仅渲染。
我也看不到someData
定义在你的componentDidMount
功能。您需要先定义它,然后才能使用它。
var App = React.createClass({
getInitialState: function() {
return {
list: [],
newFilm: {},
searchWord: '',
searchDetails: {}
}
},
componentDidMount: function() {
var someData = {'name': 'abc'};
this.setState({
searchDetails:someData,
newFilm: 'I am first text',
})
},
render: function() {
console.log(this.state.newFilm);
return (
<div>{this.state.newFilm}</div>
)
}
})
ReactDOM.render(<App/>, document.getElementById('app'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.14.8/react.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.14.8/react-dom.js"></script>
<div id="app"></div>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)