【问题标题】:How can React js state props works after component mount?React js state props 在组件挂载后如何工作?
【发布时间】:2018-11-08 03:54:29
【问题描述】:

如何使用我的状态并通过道具在我的子组件上使用? 因为我想在我的子组件中使用单元等数据。

在父母中我这样设置:

const { unit } = this.state

然后我用道具调用子组件

...
export default EditData extends Component {
  constructor(props){
    super(props)

    this.state = {
      dataId: this.props.match.params.id,
      ...,
      measurement: ''
    }

    this.onTextboxChangeMeasurement = this.onTextboxChangeMeasurement.bind(this)
  }

  onTextboxChangeMeasurement(event){
    this.setState({
      measurement: event.target.value
    })
  }

  getData(){
    this.DataTicker.data(this.state.dataId)
      .then(res => {
        this.setState({
          ...,
          measurement: res.measurement
        })
      })
  }

  render(){
    const {
      dataId,
      measurement
    } = this.state
    return(
      <DataTickerItem dataId={dataTickerId} unit={measurement}/>
    )
  }  
}

当我执行console.log(measurement) 时,我看到 2 个结果 第一个是空白,第二个是值。

我想在我的孩子身上使用这个值,但我不能因为单位总是设置为第一个结果。

【问题讨论】:

  • 如果可能的话,从你的组件中添加更多代码,问题不清楚
  • 您没有提供足够的上下文。 unit这个值是什么,是静态的还是异步获取的,你在哪里使用console.log等等
  • 在这个网站上花 10 分钟,你的问题会减少 80%:reactjs.org/tutorial/tutorial.html

标签: javascript reactjs state react-props


【解决方案1】:

当您在孩子中设置unit={measurement} 时,这意味着 - 将孩子的unit 变量值设置为measurement(来自父母)。但是您没有在父母中提及measurement 的任何价值。如果您在父母中const { unit } = this.state,这将更有意义:

&lt;DataTickerItem dataId={dataTickerId} unit={unit}/&gt;

现在您的 DataTickerItem 应该有一个 unit 变量,并从其父级分配了 unit

【讨论】:

  • 是的,我已经试过了。当我使用 console.log 单元时,它将显示 2 个结果。
  • 第一个结果为空,第二个结果为测量值。
  • 但是当我使用 &lt;DataTickerItem dataId={dataTickerId} unit={unit}/&gt; 时,单位只设置为第一个结果
  • 我还是不清楚。你说你在父母中设置了const { unit } = this.stateEditData 是你的父母吗?没有这样的说法
猜你喜欢
  • 2019-06-23
  • 2020-05-25
  • 2020-05-15
  • 2019-02-02
  • 1970-01-01
  • 2021-05-06
  • 2020-07-02
  • 1970-01-01
  • 2023-03-04
相关资源
最近更新 更多