反应TypeError:lists.map不是一个函数

光滑97

TypeError:lists.map不是函数

1.我正在使用React来创建一个TodoList。它一直有效,直到您添加列表为止。单击按钮时添加删除功能时发生错误

2.使用useuseContext将列表与其他文件分开是否有问题?

对于这个问题的尴尬,我感到抱歉。感谢您为解决此问题所提供的帮助。

  • TodoList.jsx

    import React, { useContext} from 'react';
    import Todo from './Todo';
    import { ListContext } from './ListContext';



    const TodoList = () => {
        const [lists, setLists] = useContext(ListContext);

        return (
            <div>
                {lists.map((list, index) => {
                    return <Todo list={list.todos} key={index}/>
                })}
            </div>
        );
    }

    export default TodoList;

  • Btn.jsx

import React, {useContext} from 'react';
import { ListContext } from './ListContext';

const Btn = (id) => {

    const [lists, setLists] = useContext(ListContext);

    const onRemove = (id) => {
        setLists({
            lists: lists.filter(list => list.id !== id)
        });
    }

    return(
        <>
        <button onClick={(e) => {
            e.stopPropagation();
            onRemove(id);
        }}>x</button>
        </>
    );  `enter code here`
}

export default Btn;
  • ListContext.jsx
import React, {useState, createContext,} from 'react';

export const ListContext = createContext();

export const ListProvider = (props) => {

    const [lists, setLists] = useState([
        {
            todos: 'Make a TodoList',
            id: 1,
        },
    ]);

    return(
        <ListContext.Provider value={[lists, setLists]}>
            {props.children}
        </ListContext.Provider>
    );   
}

TypeError:lists.map不是函数TodoList C:/Users/user/Desktop/Work/VSC-workspace/React/todolist/src/component/TodoList.jsx:11 8 | const [lists,setLists] = useContext(ListContext); 9 | 10 | 返回(

11 | `在此处输入代码| ^ 12 | {lists.map((list,index)=> {13 |返回14 |})}

ravibagul91

你的问题在这里,你只是从而不是todoslistsid

<Todo list={list.todos} key={index}/>

Todo组件中,您尝试访问的list.idundefined,因为尚未从TodoList组件传递它

TodoList组件中,无需传递list.todos,只需传递list类似

<Todo list={list} key={index}/>

您的Todo组件应该是

const Todo = ({list}) => { 
   return( 
      <div className="todolist"> 
        <li>
         {list.todos}
         <Btn id={list.id}/>
        </li> 
      </div> 
   ); 
}

另外一个问题是Btn组件定义,

const Btn = (id) => { ... 

你需要这样做

const Btn = ({id}) => { ... //notice the curly braces as you did in `Todo` component

注意:您仍然在这里遇到任何问题

lists.filter(list => list.id !== id)

你可以这样做,

lists.filter(list => Number(list.id) !== Number(id)) //possibility that `id` props might come as `string` type

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

反应-TypeError:jokes.map不是一个函数

反应:.map不是一个函数

反应:this.props.posts.map不是一个函数

data.map 不是一个函数反应

反应 this.state.addroom.map 不是一个函数

TypeError:this.props.propName.map不是一个函数反应js

反应TypeError:this.state.List.map不是一个函数

反应-TypeError:_this.setState不是一个函数

TypeError:this.props.data.map不是一个函数,但是data是一个列表

反应typerror,不是一个函数

TypeError:$ .mainBowerFiles不是一个函数

TypeError:$(...)。addEventListener不是一个函数

TypeError:func(...)。then不是一个函数

TypeError:this。$ set不是一个函数

TypeError:require(...)不是一个函数

TypeError:$(...)。visualize不是一个函数

TypeError .subscribe不是一个函数

TypeError:$(...)。datetimepicker不是一个函数

TypeError:$ .find不是一个函数

TypeError:$(...)。dialog不是一个函数

TypeError:$(...)。datepicker不是一个函数

TypeError:elements.map 不是函数,即使元素是一个数组?

React 16:TypeError:this.state.userInput.map不是一个函数

未捕获的TypeError:_this.props.data.map不是一个函数,映射错误以渲染组件

Tensorflow.js:tf.pad导致TypeError:t.map不是一个函数

TypeError:即使userData是数组,userData.map也不是一个函数

React:如何解决'Uncaught TypeError:this.state.data.map不是一个函数'

TypeError:this.state.rates.map不是一个函数-React.js

TypeError:data.Order.map不是一个函数(react和graphql)