为什么redux是从API提取数据的首选方法?当在我的React应用程序的两个或多个组件之间共享特定的API数据时,我同意采用Redux的方式。但是,如果数据仅由单个组件使用,该怎么办?我有一个“项目详细信息”页面,其中显示了特定项目的详细信息。我不应该只从componentDidMount方法调用其API,就像这样:
import { Item } from '_services' // Item service has methods that make API calls eventually
class ItemDetailsPage extends React.Component {
state = { data: null, error: null, isFetchingData: false; }
componentDidMount () {
const { itemId } = this.props.match.params
this.setState({isFetchingData: true}, () => {
Item.getDetails(itemId)
.then(data => this.setState({data:data, isFetchingData: false}))
.catch(error => this.setState({error}))
.finally(error => this.setState({isFetchingData: false}))
})
}
render () {
if (this.state.isFetchingData) {
return <Spinner/>
}
if (this.state.error) {
return <ErrorComponent error={this.state.error}/>
}
return <ItemDetailsComponent itemData={this.state.data}/>
}
}
我想知道,这种方法在redux方式上的缺点是什么,即在componentDidMount中调度动作并通过道具从redux状态获取项目数据。
是的,您不必完成Redux中的所有API调用。当在多个组件中使用某些数据时,需要他存储全局状态。或者,当您不需要为每个渲染组件加载数据时,在这种情况下,您可以将数据存储在Redux中。并使用例如reselect来存储备忘录数据,或通过超时更新数据(例如,如果您知道服务器很少更新某些数据)。