2017-05-18 9 views
0

React/Reduxでアクションとレデューサーを構造化する方法を頭に入れようとしています。他のコンポーネントのレデューサーから生成されたプロセスからデータを取得する方法

私は基本的に出力コンポーネント(LogOutput)とボタン(RunScript)を持っています。ユーザーがボタンをクリックすると、結果が出力に表示されます。

アクション/ RunScript.js

export const EXEC = 'EXEC'; 

export function exec() { 
    return { 
    type: EXEC 
    }; 
} 

、その後減速のロジックを置く:

I は私が行うことになっていたは、ボタンのアクションを書くと思った何

還元剤/ RunScript.js

export default function execScript(state, action) { 
    switch (action.type) { 
    case EXEC_PLUGIN: 
     // Create a child process 
     tail = child.spawn('tail', ['/var/log/system.log']); 
     tail.stdout.on('data', data => { 
     console.log(data.toString()); 
     }); 
     return state; 
    default: 
     return state; 
    } 
} 

しかし、私はどのように生成されたプロセスデータをLogOutputコンポーネントにパイプする必要があるのか​​分かりません。

+1

あなたは見てに興味があるかもしれない[ミドルウェア](HTTP: //redux.js.org/docs/advanced/Middleware.html) – Hodrobond

+2

非同期のものについては[redux-saga](https://github.com/redux-saga/redux-saga)を調べることができます – elclanrs

答えて

0

ちょうどこの上でループを閉じるためには、ここで私が一緒に行くことになったものです:

ミドルウェア/ RunScript.js

function createStreamOutputMiddleware() { 
    return (store) => (next) => (action) => { 
    let proc = {}; 

    switch (action.type) { 
     case EXEC_PLUGIN: 
     proc = child.spawn('tail', ['/var/log/system.log']); 
     proc.stdout.on('data', data => { 
      console.log(data.toString()); 
     }) 
     break; 

     default: 
     break; 
    } 

    return next(action); 
    }; 
} 
const streamOutput = createStreamOutputMiddleware(); 

export default streamOutput; 
関連する問題