gpt4 book ai didi

javascript - 如何在另一个 react 组件上调用另一个函数?

转载 作者:行者123 更新时间:2023-12-03 05:14:33 26 4
gpt4 key购买 nike

我是 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com