Javascript 未调用ReactJS函数

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

类扩展了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';
实际上,最简单的更改是将状态赋值移动到构造函数的最后一行,原因很简单,这样到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是的,对不起,我现在为你的应用程序添加了修复程序以使其工作,以及另一种使你的工作更灵活的方法;