React js更改状态不会更新组件
React js changing state does not update component
我有一个按钮,当它被点击时,它应该将按钮颜色更改为红色,我通过更改状态来更新组件的类来实现它。红色类因此更新颜色,4秒后它将恢复正常。但不知何故,它并没有更新和重新渲染组件。我的代码:
import React from "react";
import ReactDom from "react-dom";
const app = document.getElementById("app");
class Layout extends React.Component{
constructor(props){
super(props);
this.users =[
{
name:"user1",
world:"88",
},{
name:"user12",
world:"882",
},{
name:"user13",
world:"883",
},{
name:"user14",
world:"884",
},{
name:"user14",
world:"884",
},{
name:"user15",
world:"885",
},{
name:"user16",
world:"886",
},{
name:"user17",
world:"8867",
},{
name:"user18",
world:"8868",
}
];
this.ulist = this.users.map((user, i) => {
var cName = i<5 ? "active":"nonActive";
return <div key = {i} className = {cName}><h4>{user.name}</h4><p>{user.world}</p></div>;
});
this.state = {
lastUser:4,
firstUser:0,
errorUp:"",
errorDown: "",
};
}
moveUp(){
this.state.errorUp = "red";
setTimeout(() =>{
this.state.errorUp = "";
},4000);
}
render(){
return(
<div>
<i className={"fa fa-caret-up arrow "+ this.state.errorUp} aria-hidden="true" onClick = {this.moveUp.bind(this)}></i>
<i className={"fa fa-caret-down arrow "+ this.state.errorDown} aria-hidden="true"></i>
{this.ulist}
</div>
);
}
}
ReactDom.render(<Layout/>,app);
为什么会发生这种事。还有没有其他方法可以将类添加到组件中以便更新。感谢您抽出时间;
您需要使用this.setState({property:value})
方法而不是this.state.something="value"以设置新状态。this.state.errorUp="red"不起作用,因为设置state是一个异步操作,而setState方法就是为此目的创建的。
即使使用useState,在更新状态变量时,我也遇到了组件不重新渲染的问题。对我来说,有效的方法是不在组件的return语句中调用.map(),而是在setState函数中调用.ma()。
例如,给定:
const { imgNums } = props; // [123, 456, 789]
const [ myImages, setMyImages ] = useState( [] );
这不起作用:
setMyImages( imgNums.slice() );
return(
<div>
{myImages.map((number, index) =>
( <img key={`${number}${index}`}
src={`/images/${number}.jpeg`}
alt='some description' /> ) ))
}
</div>
);
但事实确实如此:
setMyImages( imgNums.map((number, index) =>
( <img key={`${number}${index}`}
src={`/images/${number}.jpeg`}
alt='some description' /> ) ));
return(
<div>
{myImages}
</div>
);
相关文章:
- 调度没有'无法立即更新组件
- React js更改状态不会更新组件
- 如何使用JavaScript更新JSP页面的一些组件
- 如何在加载Angular2.RC1子组件时更新它
- ReactJS组件中显示的视频未更新
- 如何创建独立于数组更新的组件列表
- 组件道具更改后更新redux存储
- 如何根据其他组件中的事件更新组件URL
- 在ReactJs中更新组件时更新jQuery slick carousel
- ReactJS:如何在改变状态后立即更新组件
- ReactJS - 在更改单独的类属性时更新组件
- Redux未更新组件
- 更新组件后,Javascript无法工作
- 从外部更新组件属性
- React用class查找所有组件,从外部更新组件状态或道具.模态叠加
- React-Redux connect()不更新组件,即使状态被改变而没有突变
- 道具值更改时更新组件
- Reactjs更新组件DidMount
- 反应:从渲染方法外部更新组件的 props,而不使用状态
- 如何获取模拟的反应事件以更新组件中 ref 的值