javascript - 如何通过单击组件外部的按钮来刷新 React 组件?
问题描述
我是 Web 开发的新手,并决定学习 ReactJs。我正在尝试创建一个随机报价生成器作为 freecodecamp 前端库项目的一部分。问题:我有一个反应组件,它从网站获取报价,然后在屏幕上显示一个随机报价。我在组件之外还有一个按钮,其唯一目的是获取新代码并将其显示在屏幕上。每当我单击按钮时如何刷新反应组件?任何帮助表示赞赏!:D 这是我的组件:
class MyComponent extends React.Component {
constructor(props) {
super(props);
this.state = {
quote: ''
};
}
componentDidMount() {
fetch("https://type.fit/api/quotes")
.then(res => res.json())
.then(
(result) => {
this.setState({
quote: result[Math.floor(Math.random() * result.length)]
});
},
)
}
render() {
return (
<p id = 'reactQuote'>{this.state.quote.text}< /p>
);
}
}
ReactDOM.render( MyComponent />, document.getElementById('text'))
<div id="text"></div>
<button id='new-quote'>New Quote</button>
解决方案
创建一个包含按钮和组件的组件,将引用作为上层组件中的状态并将其作为道具传递给您的组件,现在当您按下按钮时,它将更改上层组件中的状态并且它将被传递给你的组件,强制它刷新并显示新的报价。
推荐阅读
- php - 在应用程序网关后面运行时 Laravel 出现奇怪的行为(错误 403)
- php - 使用 PHP 获取格式正确的客户端 ip
- bash - Using Terraform list of strings as an array in Shell template script
- javascript - 如何使用 Google 的地理编码器 API 查询结果列表?
- ruby-on-rails - Parallel_tests 数据库不存在
- javascript - THREE.JS - 展平测地线多面体
- python - 如何消除 Matplotlib 复合条形图中的空白
- r - 随机创建一个按组为零或一的变量,以及一个附加变量(零或一),如果变量为一
- javascript - 如何测试一个使用 props.history 的按钮,因为它是 onClick 和反应测试库?
- typescript - 如何跨模块共享 TypeScript 重载?