问题描述
我创建了 todoapp 并且我想创建一个按钮,当单击该按钮时,将修改列表以仅显示已完成的任务。
我有三个组成部分:
App.js
- 它是一个主要组件,TasksList.js
- 负责显示任务(最初它显示所有任务),ListHandler
- 我想在这里创建上述按钮。
我决定使用 useRef 能够在任何地方访问任务列表(在 TasksList
中使用类 tasksWrapper 的 ul)。
App.js
:
import React,{ useState,useRef } from "react";
import "./sass/main.css";
import Header from "./components/Header";
import Browser from "./components/Browser";
import TasksList from "./components/TasksList";
import ListHandler from "./components/ListHandler";
function App() {
//set default date for initial tasks
let defaultDate = new Date().toTimeString();
defaultDate = defaultDate.split(" ")[0];
const [tasksList,setTasksList] = useState([
{
id: 0,content: "embrace Java",done: false,active: true,date: defaultDate,},{
id: 1,content: "find a job in my dream industry",done: true,{
id: 2,content: "win a war",]);
const tasksListWrapper = useRef();
return (
<div className="App">
<Header />
<Browser tasksList={tasksList} />
<TasksList
tasksList={tasksList}
setTasksList={setTasksList}
tasksListWrapper={tasksListWrapper} />
<ListHandler
tasksList={tasksList}
setTasksList={setTasksList}
tasksListWrapper={tasksListWrapper} />
</div>
);
}
export default App;
TasksList.js
返回 JSX(displayTasks("all")
只为每个任务返回带有 task.content 的 :
return (
<section className="tasksList">
<h2>LIST</h2>
<ul ref={tasksListWrapper} className="tasksWrapper">{displayTasks("all")}
</ul>
</section>);
ListHandler
按钮和函数 displayDoneTasks
负责显示已完成的任务:
const displayDoneTasks = () => {
const returnDoneTasks = () => {
return tasksList.map((task) => {
if (task.active && task.done) {
return (
<li
key={task.id}
className="task"
id={task.id}
>
{task.content}
</li>
);
} else return null;
});
};
console.log(returnDoneTasks());
tasksListWrapper.current.innerHTML = returnDoneTasks(); //if task.done === true then output is: {$$typeof: Symbol(react.element),type: "li",key: "0",ref: null,props: {…},…}
}
return (
<section className="listHandler">
>
<button className="doneTasks" onClick={() => displayDoneTasks()}>
Show only completed tasks
</button>
</section>
);
为什么 {$$typeof: Symbol(react.element),…}
不显示为 HTML 元素?也许我的解决方案是错误的,我应该以不同的方式来做?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)