加了redux之后,父组件给子组件传数据(传父组件自定义的state),子组件怎么获取啊


  • 0

    0_1495440709340_QQ图片20170522161022.png
    我这个QuoteTR组件由他的父组件传过来一个trData,父组件传值代码如下:

    this.state.quoteData.map((el,index)=>{
    	return <QuoteTR  key={index}  trData={el}  />
    }),
    

    并且在父组件的componentWillReceiveProps函数中会用
    this.setState({quoteData:newData});改变这个传入的quoteData,为什么quoteData变动的时候,QuoteTR组件没有重新渲染?

    另外请教一个问题:在书里http://huziketang.com/books/react/lesson38,

     _updateProps () {
          const { store } = this.context
          let stateProps = mapStateToProps(store.getState(), this.props) // 额外传入 props,让获取数据更加灵活方便
          this.setState({
            allProps: { // 整合普通的 props 和从 state 生成的 props
              ...stateProps,
              ...this.props
            }
          })
        }
    

    所讲的mapStateToProps可以接受两个参数,那this.props是父组件传进来的数据吗?定义mapStateToProps函数时该如何定义,才能在子组件(QuoteTR)使用父组件传进来的数据呢?


  • 0
    administrators

    @风继续吹

    1. 你的代码不完整不知道具体原因。但我猜测是因为你的 this.props.quoteData 是从 Redux 里面取的,而不是 state 里面取的,setState 并不会导致 Redux 的 store 发生改变。
    2. React-Redux 会合并从父组件传入的 props 和 connect 的 props,而 connect 的 props 会覆盖父组件的 props。想获取父组件的 props,换个名字不要被它覆盖就可以了。

登录后回复
 

与 ScriptOJ 的连接断开,我们正在尝试重连,请耐心等待