首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何实时处理ReactRedux中的状态

如何实时处理ReactRedux中的状态
EN

Stack Overflow用户
提问于 2017-09-16 09:49:48
回答 1查看 71关注 0票数 1

假设我从一个fetch(api)电话中填充了这个州。下面是我的减速机:

state.results.data

代码语言:javascript
复制
[
  1: {
     id: '1',
     name: 'name1',
     number: 11
    },
  2: {
     id: '2',
     name: 'name2',
     number: 22
    },
  3: {
     id: '3',
     name: 'name3',
     number: 33
    }   
]

我在ListView中通过一个map函数显示了这一点。我有TouchableOpacity给onPress number = number+1。这是由dispatch action给减速机做的。就像一个like按钮。因此,假设2的值现在是:

代码语言:javascript
复制
2: {
     id: '2',
     name: 'name2',
     number: 23       // <= number increased onPress.
    }

我能做到这一点。该数字在视图中实时更新。但我该怎么在数据库上做这个呢。假设我在备份的MySQL中,并通过node传递查询。我想我需要做一个dispatchaction,以增加numberid=2值,并通过fetch post将这个调用发送给api。现在这需要一些时间。就像第二个或第二个数据一样,db中的实际数据与已经处于状态的数据不同。如何显示id:2的更新信息,或者使用什么更好的方法来实现这一点?

希望我能解释清楚。准备回答任何需要澄清的问题。

非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-16 10:19:58

你可以使用像雷克这样的中间件.

这将允许您分派一个function,而不是通常应该做的事情,即分派一个Object

现在,如果您可以分派一个function,那么这个函数可以fetch,甚至返回一个promise。当该承诺得到解决后,您可以像通常所做的那样分派操作创建者。

例如:

代码语言:javascript
复制
// someActions.js
export function updateSomething(id) {
    return (dispatch) => {
        dispatch({type: 'FETCH_IN_PROGRESS'});
        fetch(`myServer.com/updateSomething?id=${id}`)
        .then((response) => response.json())
        .then((item) => dispatch({type: "SOMETHING_UPDATED", id}))
    };
} 

请注意,我没有包括错误处理,我强烈建议这样做(如.catch)。

当您创建您的商店时,您应该注入以下中间件:

代码语言:javascript
复制
import { createStore, applyMiddleware } from 'redux';
import thunk from 'redux-thunk';
import rootReducer from './reducers/index';

    // Note: this API requires redux@>=3.1.0
    const store = createStore(
      rootReducer,
      applyMiddleware(thunk)
    );
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46252515

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档