我在这里想要实现的是,我希望通过从 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/