Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用React中的setState更新对象_Javascript_Reactjs - Fatal编程技术网

Javascript 使用React中的setState更新对象

Javascript 使用React中的setState更新对象,javascript,reactjs,Javascript,Reactjs,如何将多个状态传递给setState?下面是一个例子: getInitialState: function() { return { list: [], newFilm: {}, searchWord: '', searchDetails: {} } }, componentDidMount: function() { this.setState({ searchDetails:someData, newFilm: 'I am fir

如何将多个状态传递给
setState
?下面是一个例子:

getInitialState: function() {
  return {
    list: [],
    newFilm: {},
    searchWord: '',
    searchDetails: {}
  }
},

componentDidMount: function() {
  this.setState({
    searchDetails:someData,
    newFilm: 'I am first text',
  })
}
问题是:


这个例子在语法上正确吗

设置状态的方式没有语法问题,但初始化状态的方式可能有问题。您已将newFilm初始化为对象状态,但当您设置其状态时,将给出一个字符串。因此,假设您尝试像
{this.state.newFilm}
那样渲染它,它将抛出一个错误

对象作为React子对象无效(找到:具有键{}的对象)

正如您在下面的代码段中所看到的,由于第一次呈现组件时,它会看到一个对象,之后它只显示一个字符串

若要解决此问题,请尝试将
新电影
初始化为
'
,或在尝试渲染时采取预防措施,即检查其中包含某些数据的位置,然后仅渲染

另外,我没有看到
组件didmount
函数中定义的
某些数据。您需要先定义它,然后才能使用它

var-App=React.createClass({
getInitialState:函数(){
返回{
名单:[],
新电影:{},
搜索词:“”,
searchDetails:{}
}
},
componentDidMount:function(){
var someData={'name':'abc'};
这是我的国家({
searchDetails:someData,
新电影:《我是第一个文本》,
})
},
render:function(){
console.log(this.state.newFilm);
返回(
{this.state.newFilm}
)
}
})
ReactDOM.render(,document.getElementById('app'))


你就是这样做的。请回顾一下:对不起,Piotr,但这对我有什么帮助?我对这个问题进行了编辑,但这是对我认为你想问的问题的松散解释。目前还不清楚您发布的当前代码有什么问题。它工作不正常吗?为什么?有错误吗?你目前面临的问题是什么?