作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 es6 的新手,这段代码适用于 React.createClass。我总共有 2 个函数想要传递给另一个组件,我的问题是我对其上下文感到困惑,我的代码如下:
class AppOne extends React.Component {
constructor(props) {
super(props);
this.state = {
timers: [
{
title: 'Practice squat',
project: 'Gym Chores',
id: v4(),
elapsed: 5456099,
runningSince: Date.now()
},
{
title: 'Bake squash',
project: 'Kitchen Chores',
id: v4(),
elapsed: 1273998,
runningSince: null
},
],
};
this.func = this.func.bind(this);
this.stopTimer = this.stopTimer.bind(this); //<--"Uncaught TypeError: this.stopTimer is
// not a function"
}
func(timerId) {
this.stopTimer(timerId);
}
stopTimer(timerId) {
const now = Date.now();
this.setState({
timers: this.state.timers.map((timer) => {
if(timer.id === timerId) {
const lastElapsed = now - timer.runningSince;
return Object.assign({}, timer, {
elapsed: timer.elapsed + lastElapsed,
runningSince: null
});
} else {
return timer;
}
}),
});
}
render() {
return (
<AppTwo handleFuncFromAppOne = {this.func} timers={this.state.timers} />
);
}
}
class AppTwo extends React.Component {
handleFuncFromAppTwo() {
this.props.handleFuncFromAppOne(this.props.timers.id)
}
render() {
return(
<AppThree handleFuncFromAppThree={this.handleFuncFromAppTwo} />
);
}
}
class AppThree extends React.Component {
render() {
return (
<div
className='ui bottom attached red basic button'
onClick={this.props.handleFuncFromAppThree} // I want to invoke here
>
Stop
</div>
);
}
}
你看到我已经在应用程序一上绑定(bind)了 stopTimer 的 this ,并且它使用 this.setState 来更改状态,我的问题是我无法在应用程序三上调用它。我的错误是“未捕获的类型错误:this.stopTimer 不是函数”。我的 React.createClass 似乎没有这个问题。帮忙?
最佳答案
好吧,您的问题是您没有传递定义 handleFuncFromAppThree()
的类的引用,您可以这样做:
//Apptwo 类
render() {
return(
<AppThree parentObje={this} /> //pass reference not function
);
}
//class AppThree
<div
className='ui bottom attached red basic button'
onClick={this.props.parentObj.handleFuncFromAppThree()} // invoke the //function like this
>
您可以对 Appone 类进行类似的操作。
干杯:)
关于javascript - 如何在另一个 react 组件上调用另一个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41659960/
我是一名优秀的程序员,十分优秀!