javascript - React 中渲染的 HTML 内的可点击按钮
问题描述
我有一个反应应用程序。在我的页面中,我从数据库中获取帖子内容。我想检查如果帖子内容对象有flag: 'wating_for_accept'
然后用户看到可以单击按钮的按钮并且verifyIt
功能被触发。
check_accepted_or_not(){
if(this.post.flag == 'wating_for_accept'){
render (<div> <Button onClick={this.verifyIt()}> Verify </Button> </div>);
}else{
return '';
}
}
verifyIt(){
console.log('Vefiry function has been triggered');
}
render() {
return (
<h1>{this.post.title}</h1>
{this.check_accepted_or_not}
)
}
问题是当函数check_accepted_or_not
渲染按钮时,按钮的onClick
动作不起作用!
解决方案
您需要传入对该函数的引用,而不是执行它。考虑下面这个沙箱和代码:https ://codesandbox.io/s/blissful-khorana-v5tfl
工作代码:
import React from "react";
import ReactDOM from "react-dom";
import "./styles.css";
class App extends React.Component{
check_accepted_or_not(){
if(this.props.post.flag == 'wating_for_accept'){
return (<div> <button onClick={this.verifyIt} > Verify </button> </div>);
}else{
return '';
}
}
verifyIt(){
console.log('Vefiry function has been triggered');
}
render() {
return (
<div>
<h1>{this.props.post.title}</h1>
{this.check_accepted_or_not()}
</div>
)
}
}
App.defaultProps = {
post: {
title: "My Post",
flag: "wating_for_accept"
}
}
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
推荐阅读
- laravel - 如何使用 Laravel Mix 缩小 CSS
- php - PHP如何防止foreach覆盖外部变量
- node.js - Ansible 使用 nvm 安装节点
- java - 无法在 Ubuntu 中将 Jetty9 安装为服务
- javascript - 如何使用 html/javascript 从 oauth 授权流解析重定向 URL
- json - 修改 Json 使用成 React 漂亮的拖放
- c++ - 如何为 Doxygen 样式的文件头配置 CLion?
- php - API 搜索中不允许的方法
- mysql - 在 mysql 工作台中正向工程 ER 图时出现错误 1064
- python - 成本函数不断增加