Reactjs 从MapStateTops到setState
是否可以从MapStateTops设置属性,并使用setState更改状态并将该信息保存到我的数据库中?数据是从GoogleBooksAPI返回的,我想保存一小部分数据 我国:Reactjs 从MapStateTops到setState,reactjs,react-redux,Reactjs,React Redux,是否可以从MapStateTops设置属性,并使用setState更改状态并将该信息保存到我的数据库中?数据是从GoogleBooksAPI返回的,我想保存一小部分数据 我国: state = { title: '', subtitle: '', authors: '', description: '', thumbnail: '', buyLink: '' }; 函数设置状态并保存到数据库 let { book } = this.props.b
state = {
title: '',
subtitle: '',
authors: '',
description: '',
thumbnail: '',
buyLink: ''
};
函数设置状态并保存到数据库
let { book } = this.props.book;
let bookInfo;
if (book !== null) {
const onSave = (e) => {
e.preventDefault();
let savedData = this.setState({
title: book.volumeInfo.title,
subtitle: book.volumeInfo.subtitle,
authors: book.volumeInfo.authors,
description: book.volumeInfo.description,
thumbnail: book.volumeInfo.imageLinks.thumbnail,
buyLink: book.saleInfo.buyLink
});
console.log(savedData);
};
// this.props.saveBook(savedData, this.props.history);
bookInfo = <BookInfo book={book} onClick={onSave} />;
}
如果要记录savedData,需要使用setState回调,如下所示:
this.setState({
title: book.volumeInfo.title,
subtitle: book.volumeInfo.subtitle,
authors: book.volumeInfo.authors,
description: book.volumeInfo.description,
thumbnail: book.volumeInfo.imageLinks.thumbnail,
buyLink: book.saleInfo.buyLink
}, ()=>{
console.log(this.state)
this.props.saveBook(this.state, this.props.history);
});
如果要记录savedData,需要使用setState回调,如下所示:
this.setState({
title: book.volumeInfo.title,
subtitle: book.volumeInfo.subtitle,
authors: book.volumeInfo.authors,
description: book.volumeInfo.description,
thumbnail: book.volumeInfo.imageLinks.thumbnail,
buyLink: book.saleInfo.buyLink
}, ()=>{
console.log(this.state)
this.props.saveBook(this.state, this.props.history);
});
为了
将内容保存到数据库中,您根本不需要调用setState()
。状态和道具只是React用来管理数据和和数据交互的机制(这是一种过于粗俗的简化)
查看代码,只需将书籍
对象转换为更小/不同的格式
saveData = () => {
// The code below just shows intention and shouldn't be used as is.
let book = this.props.book
let bookToSave = {
title: book.volumeInfo.title,
subtitle: book.volumeInfo.subtitle,
authors: book.volumeInfo.authors,
description: book.volumeInfo.description,
thumbnail: book.volumeInfo.imageLinks.thumbnail,
buyLink: book.saleInfo.buyLink
}
this.props.save(bookToSave, this.props.history);
}
render() {
<BookInfo book={this.props.book} onSave={this.saveData} />
}
saveData=()=>{
//下面的代码只是表示意图,不应按原样使用。
let book=这个.props.book
让bookToSave={
标题:book.volumeInfo.title,
副标题:book.volumeInfo.subtitle,
作者:book.volumeInfo.authors,
description:book.volumeInfo.description,
缩略图:book.volumeInfo.imageLinks.缩略图,
buyLink:book.saleInfo.buyLink
}
this.props.save(bookToSave,this.props.history);
}
render(){
}
我对您的流程的理解似乎是:
您调用了一个API,该API为您提供了大量数据
您可以在屏幕上显示此数据
您允许用户保存它
基于上述情况,我认为你没有必要把这本书复制到一种状态 为了将内容保存到数据库中,您根本不需要调用setState()
。状态和道具只是React用来管理数据和和数据交互的机制(这是一种过于粗俗的简化)
查看代码,只需将书籍
对象转换为更小/不同的格式
saveData = () => {
// The code below just shows intention and shouldn't be used as is.
let book = this.props.book
let bookToSave = {
title: book.volumeInfo.title,
subtitle: book.volumeInfo.subtitle,
authors: book.volumeInfo.authors,
description: book.volumeInfo.description,
thumbnail: book.volumeInfo.imageLinks.thumbnail,
buyLink: book.saleInfo.buyLink
}
this.props.save(bookToSave, this.props.history);
}
render() {
<BookInfo book={this.props.book} onSave={this.saveData} />
}
saveData=()=>{
//下面的代码只是表示意图,不应按原样使用。
let book=这个.props.book
让bookToSave={
标题:book.volumeInfo.title,
副标题:book.volumeInfo.subtitle,
作者:book.volumeInfo.authors,
description:book.volumeInfo.description,
缩略图:book.volumeInfo.imageLinks.缩略图,
buyLink:book.saleInfo.buyLink
}
this.props.save(bookToSave,this.props.history);
}
render(){
}
我对您的流程的理解似乎是:
您调用了一个API,该API为您提供了大量数据
您可以在屏幕上显示此数据
您允许用户保存它
基于上述情况,我认为你没有必要把这本书复制到一种状态 因为this.setState()
不返回任何内容。不管你想从中得到什么,你都不会,因为setState()不会给你:)因为this.setState()
不会返回任何东西。无论您想从中获取什么—您都不会,因为setState()不会将其提供给您:)