我要在这里实现的是,我希望通过从类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})
}
}
答案 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的注释框。