Javascript 对奇怪的行为作出反应
在下面的代码中,我通过父组件在两个组件之间传递数据。流程从Javascript 对奇怪的行为作出反应,javascript,reactjs,Javascript,Reactjs,在下面的代码中,我通过父组件在两个组件之间传递数据。流程从搜索到父应用然后到另一个子侧栏。我可以分别从搜索到应用和从应用到侧边栏发送,但由于某些原因,设置状态未按预期运行,使链接触发刷新,您可以在控制台中看到。日志代码注释如下: import React, { Component } from 'react'; import './App.css'; import Search from './Search'; import Sidebar from './Sidebar'; class Ap
搜索
到父应用
然后到另一个子侧栏
。我可以分别从搜索到应用和从应用到侧边栏发送,但由于某些原因,设置状态
未按预期运行,使链接触发刷新
,您可以在控制台中看到。日志
代码注释如下:
import React, { Component } from 'react';
import './App.css';
import Search from './Search';
import Sidebar from './Sidebar';
class App extends Component {
constructor() {
super()
this.state = {
menu: []
}
}
handleSearchResult = (array) => {
// always the correct value
console.log('in ', array);
this.setState( {menu: menuList})
// 1st call : empty
// 2nd call : previous value not showing on 1st call + new value as expected
// does not trigger <Sidebar list={this.state.menu}/>
console.log('out', this.state.menu);
}
render() {
return (
<div className="App">
// not refreshing
<Search updateMenu={this.handleSearchResult} />
<Sidebar list={this.state.menu}/>
</div>
);
}
}
export default App;
import React,{Component}来自'React';
导入“/App.css”;
从“./Search”导入搜索;
从“./Sidebar”导入侧栏;
类应用程序扩展组件{
构造函数(){
超级()
此.state={
菜单:[]
}
}
handleSearchResult=(数组)=>{
//始终是正确的值
console.log('in',数组);
this.setState({menu:menuList})
//第一次呼叫:空
//第二次调用:第一次调用中未显示的上一个值+预期的新值
//不会触发
console.log('out',this.state.menu);
}
render(){
返回(
//不新鲜
);
}
}
导出默认应用程序;
记录this.setState()
。这不是很直截了当this.setState()
是异步的
这是一个关于媒体的链接。很好的链接!在那里找到了解决办法。问题是
设置状态
确实存在,解决方法不是将道具
分配给子状态
并直接使用道具
而不是状态