为什么所有API调用都应通过Redux进行?

问题描述 投票:1回答:1

为什么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状态获取项目数据。

javascript reactjs redux single-page-application
1个回答
0
投票

是的,您不必完成Redux中的所有API调用。当在多个组件中使用某些数据时,需要他存储全局状态。或者,当您不需要为每个渲染组件加载数据时,在这种情况下,您可以将数据存储在Redux中。并使用例如reselect来存储备忘录数据,或通过超时更新数据(例如,如果您知道服务器很少更新某些数据)。

© www.soinside.com 2019 - 2024. All rights reserved.