调用render()时访问组件的状态

时间:2018-01-05 09:19:44

标签: javascript reactjs react-router

我正在使用组件库,我无法解决这个问题。我是新手做出反应和javascript,需要帮助 库中有一个组件,它使用标签呈现标题面板 组件
| _Component.Tab

Tab组件有2种状态,可在单击时更改其外观。但是单击处理程序和状态更改必须由我在Tab组件之外定义。我该怎么做?

2 个答案:

答案 0 :(得分:0)

通过您的问题向我看来,您需要使用props来传递函数以将状态从Component更改为Tabs。像这样:

<强>组件

changeState(value) {
  this.setState({ appearance: value  });
}

render() {
  return (
    <div>
      <Tab
        appearance={this.state.appearance}
        onChangeState={this.changeState}
      />
    </div>
  );
}

标签

render() {
  console.log('Appearance: ', this.props.appearance); // Use it for whatever you need it
  return (
    <div>
      <Button
        onClick={(value) => this.props.onChangeState(value)} />
    </div>
  );
}

答案 1 :(得分:0)

不确定为什么要处理函数,并且当它必须在Tab组件内时,它是在组件外部的状态。但是这里有一个解决方案,你在Tab组件中实际需要做的就是处理你的状态

  1. 将处理程序函数绑定在如下构造函数中 例如:

    this.handlerFunction = this.handlerFunction.bind(this)

  2. 在选项卡onClick上调用this.handlerFunction引用 例如:

    的onClick = {this.handlerFunction}

  3. 在handlerFunction中设置状态 例如:

    handlerFunction(事件){      this.setState({         tabClicked:event.target.value       }) }

  4. 否则我猜外部组件应该是您正在谈论的子组件。如果这样通过你的标签点击状态作为道具到你的外部组件(即子组件)并在子组件中接收该状态作为道具并在那里做setState。

    如果你还不清楚那么 在此处发布您的组件代码。使用Just理论,理解你所谈论的实际问题并不困难。