Reactjs 从fetch获取数据,而不是将其存储在状态

Reactjs 从fetch获取数据,而不是将其存储在状态,reactjs,fetch,redux,Reactjs,Fetch,Redux,我们有一个React/Redux应用程序,您可以在其中更改应用程序的语言,并通过fetch从API获取应用程序的所有字符串。将所有字符串存储在状态中似乎是个坏主意,只将语言(en、es等)存储在状态中,而将字符串存储在其他位置似乎是个更好的主意 那么,有没有一种方法可以保存在API调用的操作中获取的数据,而不是将其保存在状态中?如果不想使用存储,则不应该使用操作获取数据 您可以将翻译存储在其他地方,只需从州引用即可。如果您决定走这条路,最简单的选择是不使用存储并在redux之外获取翻译(即不采取

我们有一个React/Redux应用程序,您可以在其中更改应用程序的语言,并通过fetch从API获取应用程序的所有字符串。将所有字符串存储在状态中似乎是个坏主意,只将语言(en、es等)存储在状态中,而将字符串存储在其他位置似乎是个更好的主意


那么,有没有一种方法可以保存在API调用的操作中获取的数据,而不是将其保存在状态中?

如果不想使用存储,则不应该使用操作获取数据

您可以将翻译存储在其他地方,只需从州引用即可。如果您决定走这条路,最简单的选择是不使用存储并在redux之外获取翻译(即不采取任何行动)

另一个选项是将翻译存储在状态中。你可能不喜欢它,但它是完全可行的。将所有状态存储在一个对象中有其好处(时间旅行、调试等)

我认为这种情况没有明确的界限


另外,在Github上还有一个应用程序。

您可以完全控制请求,也许您可以使用类似于
fetch(myRequestParams)的东西。然后(fetchRes=>filterData(fetchRes))
并使用这种承诺的结果?如何处理服务器请求?请求是使用同构获取库完成的。在filterData(fetchRes)中,将其保存在全局中,这样我就可以在任何地方访问数据了?但如何激发请求本身呢?我的意思是,您是否在react组件生命周期挂钩上发出请求,使用thunk中间件或任何其他类型的东西?没有
是唯一正确的
方法,您可以根据需要设置api请求的结果并将其存储在应用程序状态树中(或不存储)。实际上,在组件上,我将加载默认语言字符串(或以前登录时的首选语言字符串)或者,当用户想要更改语言并将收到的数据保存在状态时,使用thunk中间件启动异步操作。那么为什么不将过滤代码放入这个thunk函数中呢?您可以启动请求、收集数据、过滤数据,然后将操作发送到您的存储。将所有翻译存储在状态中,有点打破了Redux尽可能使用最小状态的想法。如何使用高阶组件包装组件并在上下文中提供翻译?有没有一种方法可以让我从一个动作中改变上下文本身?我想你是对的。Redux是关于存储状态,而不是数据。但是,您可以将语言选择存储在存储中(即,
{…,language:'en_en'}
)。渲染组件时,可以引用外部翻译对象
mytranslationbj[this.props.language].title
。因此,上下文保存在存储中,因为它是真实状态。