带有道具的初始化状态使我的状态不确定

时间:2019-02-18 17:34:38

标签: reactjs react-props

我迅速创建了这个sandbox,以便更轻松地说明我的问题。

我希望在单击clickableItem组件的输入时,将simplePopOver组件的输入的值取为clickableItem组件的状态的值。

为此,我使用道具初始化了simplePopOver的状态,但问题是状态始终等于初始值'initialisation'而道具具有良好的值(选中console.log() )。你有想法吗 ?这是异步问题吗?

我认为我的解释不明确,但是如果您选中沙箱,它将更加清楚:)

2 个答案:

答案 0 :(得分:0)

状态clickableElementText

未声明

使用this.state.textInInput

答案 1 :(得分:0)

您需要实施getDerivedStateFromProps以根据SimplePopover组件中道具的变化来更新状态

static getDerivedStateFromProps(props, state) {
    console.log(props);
    if (props.clickableElementText !== state.prevClickableElementText) {
      return {
        prevClickableElementText: props.clickableElementText,
        textInInput: props.clickableElementText,
      }
    }
    return {
      prevClickableElementText: props.clickableElementText
    }
  }

Working demo