javascript - React 中渲染的 HTMl 中的可点击按钮

标签 javascript reactjs jsx

我有一个 React 应用程序。在我的页面中,我从数据库中获取了一篇文章内容。我想检查一下,如果帖子内容对象有 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 Action 不起作用!

最佳答案

您需要传入函数的引用,而不是执行它。考虑到这个沙箱和下面的代码: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);

关于javascript - React 中渲染的 HTMl 中的可点击按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57199343/

相关文章:

javascript:将函数的输出更改为指定的小数位

javascript - 检查数组的每个元素是否在多个数组中

css - antd Rate组件如何设置自定义样式

javascript - 需要帮助查找未终止的 JSX 内容

reactjs - Typescript/React 扩展默认功能组件 Prop 会出错

javascript - ReactJS 教程 (tic tac) 创建 HTML block 意外标记错误

javascript - 在 React Native 中查看组件层次结构

JavaScript:push 方法来平均数组

javascript - 如何将 StackNavigator 与 Redux 结合使用?

reactjs - Apollo 客户端延迟重新获取