javascript - react js功能组件中的条件渲染

标签 javascript

我想在这个 TodoDisplay 组件中渲染两个组件( TodoDone 和 TodoRemaining )
默认渲染应该是 TodoRemaining 但不知何故应该有一个 onClick 处理程序来渲染 TodoDone 组件。
任何人都可以提出一种实现它的方法吗?

import React, { useState, useEffect } from "react";
import TodoRemaining from "../TodoRemaining/TodoRemaining";
import TodoDone from "../TodoDone/TodoDone";
import { DoneTodoProvider } from "../Context/DoneTodoContext";

const TodoDisplay = () => {
  const [isPreview, setIsPreview] = useState(true);

  if (isPreview) {
    return (
      <div>
        <DoneTodoProvider>
          <TodoRemaining />
        </DoneTodoProvider>
      </div>
    );
  } else {
    return (
      <DoneTodoProvider>
        <TodoDone />
      </DoneTodoProvider>
    );
  }
};

export default TodoDisplay;

最佳答案

你可以这样做:

const TodoDisplay = () => {
  const [isPreview, setIsPreview] = useState(true);

  if (isPreview) {
    return (
      <div>
        <DoneTodoProvider>
          <TodoRemaining />
        </DoneTodoProvider>
        <Button onClick={() => setIsPreview(false)}>flip</Button>
      </div>
    );
  } else {
    return (
      <DoneTodoProvider>
        <TodoDone />
      </DoneTodoProvider>
      <Button onClick={() => setIsPreview(true)}>flip</Button>
    );
  }
};

export default TodoDisplay;
更清洁的方式:
    return (
      <div>
        <DoneTodoProvider>
          {isPreview? 
            <TodoRemaining />
          :
            <ToDoDone />
          }
        </DoneTodoProvider>
        <Button onClick={() => setIsPreview(!isPreview)}>flip</Button>
       </div>
    );

关于javascript - react js功能组件中的条件渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62935137/

相关文章:

javascript - 无法获取元素 javascript google apps 脚本

javascript - CSS 简单甘特图(紧凑)

javascript - 将所有 javascript 文件合并到一个文件中

javascript - 当我尝试通过连接到//localhost :3000, 来显示 html 页面时,显示错误,错误已作为片段上传

javascript - 尝试使用 javascript 创建共享点文档库时出现 JSON 无效错误

javascript - 监视一个 ng-model 并将更改应用到 ng-repeat 中的另一个 ng-model

javascript - 使用 Vue.js 在 <svg> 元素中渲染 svg 内容

javascript - Webpack:导出到窗口中的现有模块

javascript - 带有 h :commandButton 动态消息内容的确认对话框

javascript - Kendo Grid 更新时表现奇怪