React是否允许在组件之外获取或设置道具

时间:2018-03-14 16:12:31

标签: reactjs

当我在组件中有一个组件时

var MySubComponent;

class MyComponent {
...
getChildProps() {
console.log(MySubComponent.props.nameToGet)
}
...
MySubComponent = withCustomAudio(props => {return(<div>...</div>)});
...
render() {
return(...<MySubComponent {...this.props}/>...)
}
...}

在组件渲染之后,我想获取或设置子组件的prop。它返回cant access nameToGet of undefined

传播属性不是我想要的  (https://zhenyong.github.io/react/docs/transferring-props.html

1 个答案:

答案 0 :(得分:0)

不,你不能得到/设置这样的道具。它不是React的方式。您应该阅读有关thinking in React的更多信息。

基本上,如果您要更改child中的parent道具,它们应该属于parent状态,并作为道具传递给孩子。

示例:

import React, {Component} from "react";

class Parent extends Component {
  state = {
    childProp: "Not changed yet"
  }
  handleChildPropChange = () => {
    this.setState({
      childProp: "I changed"
    }) 
  }
  render() {
    return <Child myProp={this.state.childProp} onChangeChildProp={this.handleChildPropChange} />;
  }
}

class Child extends Component {
  render() {
    return (
      <div onClick={onChangeChildProp}>{this.props.myProp}</div>
    )
  }
}