【发布时间】:2020-10-14 19:45:22
【问题描述】:
我想创建待办事项应用程序,该应用程序为每个项目添加来自 npm liberty ("@dudadev/random-img") 的随机图像,该图像返回承诺。 只在第一次之后才起作用,这意味着我创建的第一个项目将没有图像,并且在它将工作并创建图像之后(附上示例截图)
class App extends Component {
state = {
// load items while initializing
items: [],
id: uuidv4(),
item: "",
image: "image here",
editItem: false
};
componentDidMount(){
const localStorageList = window.localStorage.getItem('items') ? JSON.parse(window.localStorage.getItem('items')) : [];
if (!localStorageList){
return null;
}
else {
this.setState({items: localStorageList})
}
}
handleChange = e => {
...
};
handleSubmit = e => {
e.preventDefault();
imgGen().then(avatarURL => this.setState({ image:avatarURL }))
const newItem = {
id: this.state.id,
title: this.state.item,
image: this.state.image
};
const updatedItems = [...this.state.items, newItem];
// Save items while changing
localStorage.setItem('items', JSON.stringify(updatedItems));
this.setState({
items: updatedItems,
item: "",
image: "image here",
id: uuidv4(),
editItem: false,
});
};
clearList = () => {
...
};
handleDelete = id => {
...
};
handleEdit = id => {
...
};
render() {
return (
<TodoInput
item={this.state.item}
handleChange={this.handleChange}
handleSubmit={this.handleSubmit}
editItem={this.state.editItem}
/>
<TodoList
items={this.state.items}
clearList={this.clearList}
handleDelete={this.handleDelete}
handleEdit={this.handleEdit}
/>
}
【问题讨论】:
标签: javascript reactjs promise