【发布时间】:2023-03-20 05:09:01
【问题描述】:
所以我正在开发一个待办事项列表应用程序,我可以在其中向页面正文添加任务,并删除已完成的任务。我正在处理应用程序的最后一部分,使删除按钮起作用。但是我的删除按钮函数 onRemove 函数在未定义时返回错误。我不知道为什么要这样做,因为代码对我来说看起来不错。也许你的眼睛能捕捉到我错过的东西?我有这个应用程序的另外两个组件,以防您需要参考。
我的 App 组件是处理我所有逻辑的地方,包括 onRemove 函数:
import React, { Component } from 'react';
import './App.css';
import Navigation from './components/Navigation';
import ListInput from './components/ListInput';
import ListName from './components/ListName';
import Item from './components/Item';
import ItemList from './components/ItemList';
class App extends Component {
constructor() {
super();
this.state = {
items: [{id: 1, text:"item 1"}, {id:2, text:"item 2"}]
};
}
addItem = (value) => {
this.setState(state => {
const { items } = state;
const uuidv1 = require('uuid/v1');
const newId = uuidv1();
const newItem = {
text: value, id: newId
};
onRemove = (id) => {
this.setState(state => {
const { items } = state;
const filterdItems =
items.filter(items => items.id !== id);
return { items: filterdItems };
})
};
return {
items: [ items, newItem]
};
}
)
};
render() {
const { items } = this.state;
return (
<div className="App">
<Navigation />
<ListName />
<ListInput onSubmit={this.addItem} />
<Item />
<ItemList items={ items }
onRemove={ this.onRemove } />
</div>
);
}
}
export default App;
这是我的 Item 组件
import React from 'react';
const Item = ({ text, onRemove }) =>{
return (
<div>
<button
onClick={onRemove}>X
</button>
<ul>{text}</ul>
</div>
)}
export default Item;
这是我的 ItemList 组件:
import React from 'react';
import Item from './Item';
const ItemList = ({ items, onRemove }) => {
return (
<div>
{items.map(items => <Item key={items.id}
text={items.text}
onRemove={() => onRemove(items.id)} />
)}
</div>
)
}
export default ItemList;
如果您需要任何其他组件的代码或有任何其他问题,请告诉我。提前感谢您的帮助!!!
【问题讨论】:
-
this不是你想象的那样。您不能在类主体中使用 lambda。 -
@SLaks 对不起,我不明白你所说的 lambdas 是什么意思
标签: javascript reactjs