Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.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 使用this.setState更新react组件状态是';不要重新渲染组件_Javascript_Reactjs - Fatal编程技术网

Javascript 使用this.setState更新react组件状态是';不要重新渲染组件

Javascript 使用this.setState更新react组件状态是';不要重新渲染组件,javascript,reactjs,Javascript,Reactjs,我正在使用react.setState()方法更新react组件状态,状态中的值正在更新,但组件没有使用更新的值重新呈现 类任务扩展React.Component{ 构造函数(){ 超级(); 此.state={ missonContents:[此.missonContent[0]] }; } 内容错误=[{ id:“接近”, 数据:“访问农民,回顾他们的自我维持想法,提供咨询并提出合适的选择。我们支持农民,直到他们自我维持,而不是一次性捐赠。” }, { id:“计划”, 数据:“为每个农民

我正在使用react.setState()方法更新react组件状态,状态中的值正在更新,但组件没有使用更新的值重新呈现

类任务扩展React.Component{
构造函数(){
超级();
此.state={
missonContents:[此.missonContent[0]]
};
}
内容错误=[{
id:“接近”,
数据:“访问农民,回顾他们的自我维持想法,提供咨询并提出合适的选择。我们支持农民,直到他们自我维持,而不是一次性捐赠。”
},
{
id:“计划”,
数据:“为每个农民的自我维持想法提供90%的资金,并要求农民贡献10%的资金以创造责任。”
},
{
id:“目标”,
数据:“制定一个工作模式,使贫困农民能够自我维持。参与地区或州一级支持小农的政策宣传。”
}
];
/**在componentDidMount()中调用此方法*/
动画发射(){
/**这里有一些代码*/
//正在更新状态,但未重新提交组件
这是我的国家({
“missonContents:[this.missonContent[0],this.missonContent[1]]
});
}
render(){
//console.log(this.state[“missonContents”]);
const missionCarousel=this.state[“missonContents”].map((missionContent)=>{
//控制台日志(任务内容);
返回

{ 任务内容数据 }

}); 报税表(< div className=“col l12 m12 s12 margintop50卡”>{ 使命召唤 } < /div> ); } }

在你的
动画任务()中试试这个
在设置状态调用之后
componentdidmount()
我希望它能起作用

  • 更新:我在代码中看不到componentdidmount。基于您的一条评论,我说您可以使用它,因此如果您没有componentdidmount并在其中调用animatedmission,它可能无法工作。这也不是最好的解决方案

您的代码中存在一些问题。 1) 首先,在构造函数中绑定
animateMission
方法
this.animateMission=this.animateMission.bind(this);
或者使用箭头函数

2) 你有一些拼写错误。
this.setState({missonContents:[this.missonContent[0],this.missonContents[1]]);//更新状态,不重新招标组件


此处
this.missonContent[1]
this.missonContent[0]
有不同的拼写。

您可以通过将此代码放置在
构造函数中来绑定
animateMission()
this.animateMission=this.animateMission.bind(this)
或更改
animateMission(){…}
to
animateMission=()=>{…}
。您在哪里调用
animateMission()
?我在componentDidMount()中调用animateMission请使用自动绑定语法绑定函数。animateMission=()=>{……}我将函数改为animateMission=()=>{},但组件仍然没有使用更新的data@naveen您在
状态
对象中拼错了
任务内容
this.setState()
正在将更新的内容设置为
missionContents
属性,但您正在呈现
missonContents
属性。不工作,而且手动调用componentDidMount()是否正确?是的,手动调用
componentDidMount
可以。有时,您希望在页面挂载后获取数据。