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()
是异步的


这是一个关于媒体的链接。

很好的链接!在那里找到了解决办法。问题是
设置状态
确实存在,解决方法不是将
道具
分配给子
状态
并直接使用
道具
而不是
状态