import { useState, useImperativeHandle, forwardRef } from 'react'

const Item = (props, ref) => { const todoList = [ { id: 1, title: '学习webapi', isDone: true, }, ] const [renderList, setTodoList] = useState(todoList) const [arr, setArr] = useState(todoList) useImperativeHandle(ref, () => ({ handleAddList: value => { setTodoList([ { id: renderList.length + 1, title: value, isDone: false, }, ...renderList, ]) }, render: type => { if (type === '全部') { setArr(renderList) } else if (type === '未完成') { setArr(renderList.filter(item => !item.isDone)) } else { setArr(renderList.filter(item => item.isDone)) } }, }))

const toggleStatus = item => { const newList = renderList.map(list => { if (list.id === item.id) list.isDone = !list.isDone return list }) setTodoList(newList) }

const delItem = (id, e) => { e.stopPropagation() const newList = renderList.filter(list => list.id !== id) setTodoList(newList) }

const computedList = () => { if (arr.length) { return arr.map(item => ( <li key={item.id} onClick={() => toggleStatus(item)}> <b className="del" onClick={e => delItem(item.id, e)}> ❌ )) } else { return

  • 当前没有任务,请添加!
  • } }

    return

      {computedList()}
    }

    export default forwardRef(Item

    import useState useImperativeHandle forwardRef from reactconst Item = props ref = 	const todoList = 					id 1			title 学习webapi			isDone true				const renderList setTodoList = useStatetodoList	const

    原文地址: http://www.cveoy.top/t/topic/ivq9 著作权归作者所有。请勿转载和采集!

    免费AI点我,无需注册和登录