javascript - 反应:即使数据可以访问,props.filter 也不起作用
问题描述
为什么 TaskList 组件中的 props.tasks.filter 不起作用并导致错误?
我能够访问道具 - 我已经 JSON.stringified 返回中的道具并正确显示数据。
import React, { Component, useState } from 'react';
import './App.css';
import AddTask from '../src/components/AddTask';
import TaskList from '../src/components/TaskList';
const App = () => {
const [tasks, setTasks] = useState(
{
name: 'Example 1',
id: 1,
important: true,
targetDate: '2021-07-16',
active: true,
},
{
name: 'Example 2',
id: 2,
important: false,
targetDate: '2021-06-03',
active: false,
}
);
return (
<div className="App">
<AddTask />
<TaskList tasks={tasks} />
<h1 style={{ color: 'red' }}>Test</h1>
</div>
);
};
export default App;
任务列表.js
import React from 'react';
import Task from './Task';
const TaskList = (props) => {
const active = props.tasks.filter((task) => task.active);
const done = props.tasks.filter((task) => !task.active);
return (
<>
<ul>{JSON.stringify(props.tasks)}</ul>
</>
);
};
export default TaskList;
我收到的错误消息:
TypeError: props.tasks.filter is not a function
2 | import Task from './Task';
3 |
4 | const TaskList = (props) => {
> 5 | const active = props.tasks.filter((task) => task.active);
6 | const done = props.tasks.filter((task) => !task.active);
7 |
8 | return (
解决方案
您应该像这样tasks
在useState
as 数组中定义:
const [tasks, setTasks] = useState([
{
name: 'Example 1',
id: 1,
important: true,
targetDate: '2021-07-16',
active: true,
},
{
name: 'Example 2',
id: 2,
important: false,
targetDate: '2021-06-03',
active: false,
}
]);
推荐阅读
- c++ - 在 vscode C/C++ 中覆盖智能感知的默认 includePath
- c++ - 堆损坏和其他问题
- javascript - 如何使用 jQuery 效果作为函数属性
- typescript - TypeScript:'string | 类型的参数 number' 不可分配给“number”类型的参数
- swift - 从框架加载 nib 文件时出现 NSInternalInconsistencyException
- swiftui - ObservableObject 中的@Published 和普通 AnyPublisher 属性有什么区别
- java - 无法访问资源文件夹中的文件
- java - 带有 XMLStreamReader 和 StreamFilter 的 JAXB 未完成
- r - 创建动态标签面板
- python - Python tkinter - TypeError - 'str' 对象不能解释为整数