我在这里想要实现的是,我希望通过从 A 类调用 B 的函数 init() 来更新导入的 B 类状态中的值。我正在初始化 B 类的 对象并通过对象调用init函数。

A 类

  import B from 'b.js'

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

B 类 :我正在使用 init 函数更新状态,但似乎我得到 setState 不是函数 错误。我也尝试在构造函数中绑定(bind) init 函数,但错误保持不变。
    class B extends Component{
      constructor(props){
       super(props);
       state = {
            text:""
         }
       }

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

最佳答案

你真的不需要 init ,这就是 constructor 的用途。您应该在创建它时将文本作为 Prop 传递给组件 B:

import B from 'b.js';

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

然后你可以在构造函数中为 B 设置状态。
state = {
    text: prop.initialText,
};

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

关于javascript - React - 在从另一个类调用的函数中调用 setState 不会引发函数异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54771702/

10-16 00:35
查看更多