为此,我正在考虑一种咖啡冲剂及其成本,然后将其发送到另一个组件。用户在一个div中按下按钮,而另一个div应该从“您好,我今天如何为您提供帮助?”中更新其文本。改为“一个” +“咖啡+”?即为$” +价格。依此类推。
尽管如此,我仍在努力寻找如何启动这一系列事件的方法。我所拥有的是:
import React, { Component } from 'react';
class Barista extends Component {
state = {
text: "Hello, How May I Help You Today?"
}
confirm(){
this.setState({ text: "One " + this.props.coffee + "? That will be $" + this.props.value});
setTimeout(() => {this.waiting()}, 5000);
}
waiting() {
this.setState({ text:"Waiting for " + this.props.coffee});
setTimeout(() => {this.finish()}, 5000);
}
finish() {
this.setState({ text: "Here is your " + this.props.coffee + ". Enjoy!"});
}
render() {
return(
<div>
{this.state.text}
</div>
)
}
}
export default Barista;
我在哪里以及如何调用Confirm()函数来启动此事件链?
答案 0 :(得分:0)
我认为您需要将confirm
的值移动coffee
到源,像这样:
class App extends Component {
state = {
text: "Hello, How May I Help You Today?"
}
confirm(coffee, value) {
this.setState({
coffee,
value,
text: "One " + coffee + "? That will be $" + value
}, setTimeout(() => { this.waiting() }, 5000));
}
waiting() {
this.setState({ text: "Waiting for " + this.state.coffee });
setTimeout(() => { this.finish() }, 5000);
}
finish() {
this.setState({ text: "Here is your " + this.state.coffee + ". Enjoy!" });
}
render() {
return (
<div>
<button onClick={this.confirm(A, 10)} />
<button onClick={this.confirm(B, 11)} />
<button onClick={this.confirm(C, 12)} />
<Barista text={this.state.text} />
</div>
)
}
}
class Barista extends Component {
constructor(props) {
super(props);
this.state = {
text: props.text
}
}
componentWillReceiveProps(nextProps) {
this.setState({
text: nextProps.text
})
}
render() {
return (
<div>
{this.state.text}
</div>
)
}
}
答案 1 :(得分:0)
尝试找出目标之后,我想这就是您需要的:
首先,您可以定义一个父组件(例如App),该组件将渲染Barista组件以及按钮组件,例如:
<button id="latte"></button>
<Barista />
第二,您需要将coffee
和value
传递到Barista
组件,因此在App组件内部,您可以将<Barista />
更改为
<Barista coffeeName={this.state.coffee} coffeeValue={this.state.value} />
访问coffeeName
组件内的coffeeValue
和Barista
...您可以使用它们来显示信息。 p>
最后,在App组件中添加一个函数来修改this.props.coffeeName
和coffee
状态,并将其绑定到按钮。例如,
value
...
<button id="latte" onClick={this.onClick}></button>
希望这会对您有所帮助。