Javascript 未调用ReactJS函数
类扩展了React.Component{ 构造器{ 超级作物; this.state={obj:this.two} this.one=this.one.bindthis; this.two=this.two.bindthis; } 一个{ 控制台,日志工作。。。 } 两个{ 回来 } 渲染{ 回来 作为功能: 作为对象属性: } } 类扩展了React.Component{ 渲染{ 回来 {this.props.two} } } ReactDOM.render,document.getElementById'app';Javascript 未调用ReactJS函数,javascript,reactjs,Javascript,Reactjs,类扩展了React.Component{ 构造器{ 超级作物; this.state={obj:this.two} this.one=this.one.bindthis; this.two=this.two.bindthis; } 一个{ 控制台,日志工作。。。 } 两个{ 回来 } 渲染{ 回来 作为功能: 作为对象属性: } } 类扩展了React.Component{ 渲染{ 回来 {this.props.two} } } ReactDOM.render,document.getEleme
实际上,最简单的更改是将状态赋值移动到构造函数的最后一行,原因很简单,这样到this上下文的绑定就可以工作了
class A extends React.Component {
constructor(props) {
super(props);
this.one = this.one.bind(this);
this.two = this.two.bind(this);
this.state = { obj: this.two };
}
// ... rest stays as is
}
当您先设置状态,然后才更改绑定上下文时,state.obj将不会绑定到此上下文
虽然这将是你提出的问题的解决方案,但我不清楚这是否是你真正想要的。我强烈建议不要像您那样创建子组件,这将有助于增强功能,A应该是决定B如何呈现的人
也许您只是想将一个无状态组件传递给类B,该类B接收一个回调函数,该回调函数应该在类a上触发,这可以/应该通过传递props来实现,而不是通过传递一个呈现另一个组件的方法来实现
所以你可以创造一些类似的东西
const SubmitButton = ({
trigger = () => {},
text = "Submit"
}) => <input type="Submit" onClick={trigger} value={text} />;
然后像这个例子一样使用它
const SubmitButton={
触发器==>{},
text=提交
} => ;
类扩展了React.Component{
构造器{
超级作物;
this.state={obj:this.one}
}
一个{
控制台,日志工作。。。
}
两个{
回来
}
渲染{
回来
As Function:this.one}text=Submit Function/>
As对象属性:this.state.obj}text=Submit state/>
通过B函数:this.one}/>
通过B状态:this.state.obj}/>
}
}
类扩展了React.Component{
渲染{
const Template=this.props.itemtplate;
回来
}
}
ReactDOM.render,document.getElementById'app';
状态在React中是异步的。您不能设置状态并立即使用它。这也适用于初始状态集。我已经尝试过了,但它不起作用。您能在代码段中实现并演示给我看吗that@Abhishek是的,对不起,我现在为你的应用程序添加了修复程序以使其工作,以及另一种使你的工作更灵活的方法;