Javascript 根据通过链接检索的数据修改设置状态
大家好 我是一个年轻的编程初学者。我正在尝试从链接恢复到另一个组件的数据。除了用setState将恢复的数据放在状态对象中之外,一切都正常。我想我不知道关于setState的所有可能的事情,但我完全迷路了 我有一个发送数据“Command_ID”的链接: 我可以在我的console.log(order\u id)中看到正确的编号,并在链接部分恢复良好的“Command\u id”。但是,当我尝试将其与setState一起放置,并在控制台中查看它是否有效时,我只为this.state.orderID设置了一个未定义的值 感谢您的帮助:)是异步方法,要在设置状态后执行某些操作,可以将函数作为Javascript 根据通过链接检索的数据修改设置状态,javascript,reactjs,hyperlink,components,setstate,Javascript,Reactjs,Hyperlink,Components,Setstate,大家好 我是一个年轻的编程初学者。我正在尝试从链接恢复到另一个组件的数据。除了用setState将恢复的数据放在状态对象中之外,一切都正常。我想我不知道关于setState的所有可能的事情,但我完全迷路了 我有一个发送数据“Command_ID”的链接: 我可以在我的console.log(order\u id)中看到正确的编号,并在链接部分恢复良好的“Command\u id”。但是,当我尝试将其与setState一起放置,并在控制台中查看它是否有效时,我只为this.state.orderI
setState
this.setState({orderID: order_id}, () => console.log(this.state.orderId));
未定义或空?
setState
是异步的。您拥有的代码执行了您希望的操作,但是第二个console.log命令运行太早,无法显示更改。您可以将它放在回调中:this.setState({orderID:order_id},函数(){console.log(this.state.orderID);})代码>(该函数将在状态更改后运行)未定义。好的,那么你认为我必须在验证这个值之前先让一点时间?因为这是我第一次遇到这个问题,不是我们“思考”这个问题,而是发生了什么。quote:setState()并不总是立即更新组件。它可以批处理更新或将更新推迟到以后。这使得在调用setState()后立即读取This.state成为一个潜在的陷阱。
谢谢你说得对,它可以工作!
state = {orderId: null};
componentDidMount() {
const order_id = this.props.match.params;
console.log(order_id);
this.setState({orderID: order_id});
console.log(this.state.orderID);
}
this.setState({orderID: order_id}, () => console.log(this.state.orderId));