Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.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 setstate在状态转换期间无法更新-react_Javascript_Reactjs - Fatal编程技术网

Javascript setstate在状态转换期间无法更新-react

Javascript setstate在状态转换期间无法更新-react,javascript,reactjs,Javascript,Reactjs,我正在尝试从它的子组件更改图像源url。如果他们点击按钮1,背景图像的索引0array`将成为图像源。按钮2为索引1,按钮3为索引2 但它显示setstate无法在现有状态转换期间更新 下面我附上代码 App.jsx var React=require('React'); var ReactDOM=require('react-dom'); var ChildComponent=require('./ChildComponent.jsx'); var Hello=React.createClas

我正在尝试从它的子组件更改图像源
url。如果他们点击按钮1,背景图像的索引0
array`将成为图像源。按钮2为索引1,按钮3为索引2

但它显示setstate无法在现有状态转换期间更新

下面我附上代码

App.jsx

var React=require('React');
var ReactDOM=require('react-dom');
var ChildComponent=require('./ChildComponent.jsx');
var Hello=React.createClass({
getInitialState:函数(){
返回{
背景图片:'https://images.unsplash.com/photo-1464013778555-8e723c2f01f8?ixlib=rb-0.3.5&q=80&fm=jpg&crop=熵&s=4b2c415f63f63afa66a347f993351bee'
};
},
把手背景变化:功能(imageIndex){
这是我的国家({
背景图片:这个.背景[图片索引]
});
},
背景:[
'https://images.unsplash.com/photo-1464013778555-8e723c2f01f8?ixlib=rb-0.3.5&q=80&fm=jpg&crop=熵&s=4b2c415f63f63afa66a347f993351bee',
'https://images.unsplash.com/photo-1463595373836-6e0b0a8ee322?ixlib=rb-0.3.5&q=80&fm=jpg&crop=熵&s=69a198dc9bfba968b5deb20c04cec8c9',
'https://images.unsplash.com/photo-1462819067004-905a72ea3996?ixlib=rb-0.3.5&q=80&fm=jpg&crop=熵&s=4832f28a526c7a3538a887b8fbbfe897'
],
render:function(){
返回(
);
}
});
var element=React.createElement(Hello,{});
render(元素,document.querySelector('.container');
child-component.jsx

var React=require('React');
module.exports=React.createClass({
把手背景变化:功能(imageIndex){
此.道具.把手背景变化(imageIndex);
},
render:function(){
返回(
图1
图2
图3
)
}
});
据我所知,我没有在代码中使用任何非法状态转换或
setState()
方法。请帮我把这个修好。提前感谢。

当你写信时

onClick = {this.handleBackgroundChange(0)}
您直接执行函数,而不是给出他的引用,请像这样尝试

onClick = {this.handleBackgroundChange.bind(this, 0)}

我也有这个问题,我做了(从同事的代码中偷来的)像
const handleBackgroundChange=()=>这个。handleBackgroundChange(0)
不需要
bind()

这个建议没有给出任何错误。谢谢,但主要问题是图像没有被改变。但是
此.state.backgroundImage
正在更改。很抱歉先前的答复。这很好用。但问题是我的网络很慢。加载完整映像后,正在更改映像。非常感谢。
onClick = {this.handleBackgroundChange(0)}
onClick = {this.handleBackgroundChange.bind(this, 0)}