javascript - ReactJS 中按钮和普通文本之间的条件渲染

标签 javascript reactjs frontend

我有一个对象数组,表示defect,现在如果缺陷的状态是打开的,那么它应该显示为按钮,并且它应该读取关闭缺陷,如果它是关闭的,那么它应该显示为按钮它应该只是提到已关闭。 因此,这里的 statusRender 就是问题所在,并且现在按最后一列中的预期工作。无法弄清楚我错过了什么。有线索吗?

render() {

  if (defect.defect_status == 'open') {
    statusRender = <button key={index} data-id={defect.id} onClick={() => this.showAlert(defect.defect_id)}>{defect.defect_status}</button>;
  } else {
    statusRender = { defect.defect_status };
  }
  return (
    <div>
      <table className="table table-bordered table-hover">
        <thead>
          <tr>
            <th>Defect ID</th>
            <th>Category</th>
            <th>Description</th>
            <th>Priority</th>
            <th>Status</th>
          </tr>
        </thead>
        <tbody>
          {this.state.defectList.map((defect, index) => {
            return (
              <tr key={index}>
                <td> {defect.defect_id}  </td>
                <td>{defect.defect_category}</td>
                <td>{defect.defect_description}</td>
                <td>{defect.defect_priority}</td>
                <td> {statusRender}
                </td>
              </tr>
            );
          })
          }
        </tbody>
      </table>
    </div>
  )
}

最佳答案

这是一个范围问题,您无法在 map 函数之外声明缺陷

{this.state.defectList.map((defect,index) => {
 return (
    <tr key={index}>   
      <td> {defect.defect_id}  </td>
      <td>{defect.defect_category}</td>
      <td>{ defect.defect_description}</td>
      <td>{ defect.defect_priority}</td>
      <td> 
        { 
          defect.defect_status === 'open' 
           ? <button key={index} data-id={defect.id} onClick = {() => this.showAlert(defect.defect_id)}>{defect.defect_status}</button>;
           : defect.defect_status;
        }
      </td>    
    </tr>
   );      
 })
}

关于javascript - ReactJS 中按钮和普通文本之间的条件渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52421845/

相关文章:

javascript - 如何从 TypeScript 中的父模块访问变量?

reactjs - 使用 React-semantic UI 进行条件渲染

php - Laravel + Vue 前端与可选的服务器端 Blade 渲染解耦

javascript - 仅将 Ember.js 用于 Rails 应用程序的一部分的最直接方法是什么?

javascript - 使用 prisma,如何从嵌套写入中访问新创建的记录(先更新,然后在其中创建)

javascript - 将 SVG 汉堡包图标旋转成 X?

reactjs - 使用react-app-rewired和customize-cra添加Webpack别名

css - 在 react 中更改 UIkit 图标的颜色

javascript - 通过 POST 将 Angular 变量传递到 Express 后端

javascript - React + redux + axios + thunk,等待interceptors.response刷新token