【问题标题】:Get parent element state from child component从子组件获取父元素状态
【发布时间】:2018-02-04 14:07:44
【问题描述】:

我有一个状态变化的组件,我想从父组件中获取“性别”的值。我该怎么做?

class CardSegment extends Component {

  constructor(props) {
    super(props);
    this.state = { gender: 'male', val: true };
  }

  render() {
    return (
      <StyleProvider style={getTheme(commonColor)}>
        <Segment style={styles.SegmentStyle}>
          <Button
            active={this.state.val}
            onPress={() => this.setState({ gender: 'male', val: true })}
            style={styles.SegmentBtnStyle}
          >
            <Text style={styles.textStyle}>Male</Text>
          </Button>
          <Button
            active={!this.state.val}
            onPress={() => this.setState({ gender: 'female', val: false })}
            style={styles.SegmentBtnStyle}
          >
            <Text style={styles.textStyle}>Female</Text>
          </Button>
        </Segment>
      </StyleProvider>
    );
  }

}

【问题讨论】:

  • 把它作为道具传给孩子?
  • 您的子组件在哪里?您始终可以将其作为道具传递,如下所述:reactjs.org/docs/components-and-props.html
  • CardSegment 是子组件,我想从父组件中获取性别的值。

标签: reactjs react-native jsx


【解决方案1】:

假设您有执行某些逻辑的父组件并将gender 作为道具传递..(无状态组件)

const ParentComponent= props => {
  const gender= 'your parent component should handle the "gender" logic here'

  return <CardSegment gender={gender} />;
};

在 CardSegment(子组件!!?!)中,只使用 componentWillReceiveProps 生命周期方法来同步更新状态。

class CardSegment extends Component {

constructor(props) {
  super(props);
  this.state = { gender: '', val: true }; 
}
componentWillReceiveProps(props){
  this.setState({gender: this.props.gender });
}
  render() {
    return (
    <StyleProvider style={getTheme(commonColor)}>
      <Segment style={styles.SegmentStyle}>
        <Button
          active={this.state.val}
          onPress={() => this.setState({ gender: 'male', val: true })}
          style={styles.SegmentBtnStyle}
        >
          <Text style={styles.textStyle}>Male</Text>
        </Button>
        <Button
          active={!this.state.val}
          onPress={() => this.setState({ gender: 'female', val: false })}
          style={styles.SegmentBtnStyle}
        >
          <Text style={styles.textStyle}>Female</Text>
        </Button>
      </Segment>
    </StyleProvider>
    );
  }
}

【讨论】:

  • 我想将性别值从 CardSegment(子)传递给另一个组件,即父组件!不是相反
  • np ... ba3dek bedek mosa3ade?
  • 尝试将一个函数从 parent 传递给 child ,该函数为 onPress,因为 parent 将具有性别 state ,在 child 你只需要使用这个函数,在 parent所有onPress逻辑和性别state
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-18
  • 2020-08-19
  • 1970-01-01
  • 2023-02-25
  • 2021-10-30
  • 1970-01-01
相关资源
最近更新 更多