当前位置: 首页 > 面试题库 >

我在哪里可以从React Redux应用程序的服务器中获取初始数据?

高豪
2023-03-14
问题内容

我已经开始学习React / Redux,偶然发现了可能是一个非常基本的问题。以下是我的应用程序中的代码段,为简单起见删除了一些代码。

我的状态由一系列网站描述,默认情况下为空。LOAD_SITES每当用户分页到其他页面时,以后的reducer就会采取措施加载不同的网站集,但目前它什么也没做。React从渲染开始PublishedSitesPage,然后渲染,然后渲染PublishedSitesBox然后遍历数据并渲染各个站点。

我想要做的是让它使用默认的空数组呈现所有内容,同时启动“从服务器加载站点”承诺,并在解决后立即调度LOAD_SITES操作。拨打电话的最佳方法是什么?我在想的任何构造PublishedSitesBox或者可能componentDidMount。但是不确定这是否行得通-
我担心的是,我将以这种方式创建一个无限循环,以保持重新渲染。我想我可以通过沿“
haveRequestedInitialData”行设置一些其他状态参数来以某种方式防止此无限循环。我的另一个想法是做完后马上做出这个承诺ReactDOM.render()。最佳和最干净的方法是什么?

export default function sites(state = [], action) {
  switch (action.type) {
    default:
      return state;
  }
}
...

const publishedSitesPageReducer = combineReducers({
  sites
});

ReactDOM.render(
  <Provider store={createStore(publishedSitesPageReducer)}>
    <PublishedSitesPage />
  </Provider>,
  this.$view.find('.js-published-sites-result-target')[0]
);

...

export default function PublishedSitesPage() {
  return (
    <PublishedSitesBox/>
  );
}

...

function mapStateToProps(state) {
  return { sites: state.sites };
}

const PublishedSitesBox = connect(mapStateToProps)(({sites}) => {
  // render sites
});

问题答案:

这种数据加载逻辑完全没有理由接触您的React组件。您在这里想要返回的诺言是将操作分派给您的reducer,后者对存储进行适当的更改,然后使React组件适当地重新呈现。

(无论在调用ReactDOM.render之前还是之后启动异步调用都没有关系; promise会以任何一种方式起作用)

像这样:

var store = createStore(publishedSitesPageReducer);

someAsyncCall().then(function(response) {
  store.dispatch(someActionCreator(response));
});

ReactDOM.render(
  <Provider store={store}>
    <PublishedSitesPage />
  </Provider>,
  this.$view.find('.js-published-sites-result-target')[0]
);

您的React组件是商店的使用者,但是没有规则要求它们必须是商店的唯一使用者。



 类似资料:
  • 问题内容: 我正在使用React-Redux构建一个应用程序。 要为React智能组件加载初始数据,我需要调度 Redux 操作,在该操作中将发生服务器数据请求。 我尝试在构造函数(ES6实现)和中分派操作。他们都工作了。 我的问题是: 在React智能组件中是否有建议的位置应分派动作。 问题答案: 在React的未来版本中,我们期望componentWillMount在某些情况下会触发多次,因此

  • 问题内容: 所以最近我一直在研究Clojure,我喜欢这种语言。我想看看是否可以在其中制作一个小型Web应用程序,以挑战自己。但是,我绝对没有建立任何与Java相关的Web应用程序的经验。实际上,我实际上对Java没有太多的经验。我从哪说起呢?我在Apache和LAMP堆栈方面拥有丰富的经验,并且我知道在Apache上大多数情况下我只会使用Fast- CGI,但我不知道Java世界中的等效功能(如

  • 我在React/React native中创建了一个音乐应用程序,为此我需要一个音乐API,它能为我提供一个音乐曲目和其他与音乐相关的东西,有人能建议我一个API能这样做吗????

  • 问题内容: 我想构建一个从服务器获取数据的应用程序,并将其显示在xaml中。我是通用程序和Windows存储应用程序中的新手。我还没有发现任何有用的东西,因为ms sql解决方案需要通用存储应用程序不允许的库:的答案没有回答我的问题,但是Jeffery的回答做了。 问题答案: 您可以直接从Windows应用程序连接到MS SQL Server。常见的方法是托管数据服务,然后应用通过REST API

  • 问题内容: 我应该在哪里为我的Java应用程序存储凭据以访问第三方服务? 凭据不是我的应用程序上每个用户都特定的。它们用于访问我的应用程序正在使用的Web服务。我知道足够多,不可以将它们硬编码到我的应用程序中,但是我在哪里以及如何存储它们呢?我还假设它们将需要加密。 问题答案: 以@Zildyan的答案,评论和对其他答案的引用为基础。 有几个选项 ,其中 存储: 数据库 属性文件 常数(硬编码)

  • 在server.xml文件和web.xml文件中都可以设置Web应用程序的初始化参数。通过设置Web应用程序的初始化参数,可以在不需要修改程序的前提下,改变Web应用程序的某些设置。如一个Web应用程序可能不只运行在一家公司,如果将该程序部署在某一家公司,而且公司名称被设置成为Web应用程序的初始化参数。这时就可以直接修改初始化参数就可以将公司名设置成这家公司的名称。 在ServletContex