React-在从另一个类调用的函数中调用setState不会引发函数异常

时间:2019-02-19 17:18:49

标签: javascript reactjs

我要在这里实现的是,我希望通过从类A调用B的函数 init()在导入的类B的状态下更新值。 B类的 new 对象,并通过该对象调用init函数。

A级

  import B from 'b.js'

  class A extends Component{
      componentDidMount(){
          const b=new B();
          b.init("hey");
        }
   }

B类中:我正在使用init函数更新状态,但看来我收到 setState不是函数错误。我也尝试在构造函数中绑定init函数,但错误保持不变。

    class B extends Component{
      constructor(props){
       super(props);
       state = {
            text:""
         }
       }

       init=(text)=>{
          this.setState({text})
        }
     }

1 个答案:

答案 0 :(得分:0)

您实际上并不需要init,这就是constructor的用途。创建组件B时,应将其作为属性传递给:

import B from 'b.js';

class A extends Component {
    componentDidMount() {
        const b = new B({ initialText: 'hey' });
    }
}

然后,您可以在B的构造函数中设置状态。

state = {
    text: prop.initialText,
};

但是要小心,从道具设置状态通常是个坏主意。有关更多详细信息,请参见此处https://reactjs.org/docs/react-component.html#constructor的注释框。