otakustay

来推销一个自己为 redux + optimistic UI 做的中间件

  •  
  •   otakustay · Apr 17, 2017 · 2344 views
    This topic created in 3317 days ago, the information mentioned may be changed or developed.

    https://www.npmjs.com/package/redux-optimistic-thunk

    看个效果( 4.4MB 图片):

    实现上面这个效果的核心代码是这样的:

    import uid from './uid';
    
    let delay = time => new Promise(resolve => setTimeout(resolve, time));
    
    export let newItem = item => ({type: 'NEW_ITEM', item: item});
    
    export let saveItem = text => [
        async (dispatch, getState) => {
            await delay(getState().delay);
    
            dispatch(newItem({text: text, id: uid(), pending: false, deleted: false}));
        },
        dispatch => dispatch(newItem({text: text, id: uid(), pending: true, deleted: false}))
    ];
    
    export let deleteItem = id => ({type: 'DELETE_ITEM', id: id});
    
    export let setDelay = delay => ({type: 'SET_DELAY', delay: delay});
    

    可以看到所有的代码都是正常的业务逻辑,saveItem就是返回个 2 段业务逻辑组成的数组,和redux-optimistic-ui这种满世界要写metatransactionID的比起来干净了很多,开发者就专注写逻辑不要关心什么事务、提交、回滚……

    自认这是当前 redux 社区里最好的 optimistic 中间件了

    更详细的分析可以看我的博客: http://otakustay.com/publish-redux-optimistic-thunk/

    3 replies    2017-04-17 19:44:01 +08:00
    jsq2627
        1
    jsq2627  
       Apr 17, 2017 via iPhone
    你这个 gif 让我 ios 的 chrome 崩溃了
    otakustay
        2
    otakustay  
    OP
       Apr 17, 2017
    @jsq2627 yes 我的 7Plus 的 Chrome 也会崩,没办法……
    nino
        3
    nino  
       Apr 17, 2017
    先赞一个再看
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1581 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 16:23 · PVG 00:23 · LAX 09:23 · JFK 12:23
    ♥ Do have faith in what you're doing.