React reducer调用两次

时间:2017-03-13 11:16:27

标签: reactjs redux

我正在为我的应用程序使用react和redux。我的问题是我收到2次我的道具,第一次是未定义的,第二次是好的。所以我不能使用道具。



import ...

class Home extends Component {
  
  //some code logic 
  
  render(){
 console.log(this.props.header);
 
 const header = this.props.header;
  
    return (
      <Welcome title={header.title} />
    )
  }

}


const mapStateToProps = (state) => {
  return {
    header: _.find(state.header, { 'page': 'accueil' })
  }
}

export default connect(mapStateToProps)(Home);
&#13;
&#13;
&#13;

console.log给我2个回答:    1 / undefined    2 / obj数组(我需要的)

未捕获的TypeError:无法读取未定义的属性标题

enter image description here

1 个答案:

答案 0 :(得分:1)

问题很简单。在您定义reducer的情况下,初始状态将设置为var initialState = { id: '', page: '', title: '', metaTitle: '', subtitle: '' } const reducerState = (state = initialState, action) => { ...... //Do what you want here return state } ,这将在第一次返回,稍后在一些处理之后将返回日期。所以你可以做两件事

首先:在reducer中设置初始状态

header.title

第二:检查组件中是否定义了class Home extends Component { //some code logic render(){ console.log(this.props.header); const header = this.props.header; return ( {header.title && <Welcome title={header.title} />} ) } } const mapStateToProps = (state) => { return { header: state.header } } export default connect(mapStateToProps)(Home);

{{1}}