【发布时间】:2021-01-16 00:19:26
【问题描述】:
我正在研究react-beautiful-dnd示例,我想添加一个元素的条件排斥,但是我收到一个无法读取该字段的错误。 这个数据
const initialData = {
tasks: {
'task-1': { id: 'task-1', content: 'Take out the garbage',type1: 'w' },
'task-2': { id: 'task-2', content: 'Watch my favorite show',type1: 'a' },
'task-3': { id: 'task-3', content: 'Charge my phone',type1: 'h' },
'task-4': { id: 'task-4', content: 'Cook dinner',type1: 'w' }
},
columns: {
'column-1': {
id: 'column-1',
title: 'To do',
type2: 'all',
taskIds: ['task-1', 'task-2', 'task-3', 'task-4']
},
'column-2': {
id: 'column-2',
title: 'In progress',
type2: 'w',
taskIds: []
},
'column-3': {
id: 'column-3',
title: 'Done',
type2: 'a',
taskIds: []
}
},
// Facilitate reordering of the columns
columnOrder: ['column-1', 'column-2', 'column-3'] }export default initialData
所以他们是相连的
import initialData from './initial-data'
所以它是在状态中分配的
state = initialData
这就是它的使用方式,我描述的一切都有效,这是示例中的代码
const start = this.state.columns[source.droppableId]
const finish = this.state.columns[destination.droppableId]
if (start === finish) {
const newTaskIds = Array.from(start.taskIds)
现在下面我想添加我的条件,它会引发错误
const typeDrag = this.state.tasks[source.draggableId]
const typeDrop = this.state.columns[destination.droppableId]
if(typeDrag.type1!==typeDrop.type2)
{return}
我不明白为什么 start.taskIds 有效,但是 typeDrag.type1 报告说没有这样的字段
类似的可执行代码和框示例 example
【问题讨论】:
-
为什么是.type1?您的任务对象不包含此字段。
-
错误指出
this.state.tasks中没有属性[source.draggableId]。通过在调试器中捕获或登录控制台来检查draggableId是否正确 -
@VictorMolina 仔细看一切)
-
@AntonTemchenko 我加了个截图,可以看到id是存在的
-
DraggableLocation没有属性draggableId: github.com/atlassian/react-beautiful-dnd/blob/master/docs/…
标签: javascript reactjs typeerror