Javascript 我应该如何从不同组件的减速器生成的进程中获取数据

Javascript 我应该如何从不同组件的减速器生成的进程中获取数据,javascript,reactjs,react-redux,Javascript,Reactjs,React Redux,我正试图了解如何在React/Redux中构造动作和减缩器 我拥有的基本上是一个输出组件(LogOutput)和一个按钮(RunScript)。当用户单击按钮时,结果应显示在输出中 我想我应该做的是为按钮写一个动作: 操作/RunScript.js export const EXEC = 'EXEC'; export function exec() { return { type: EXEC }; } export default function execScript(st

我正试图了解如何在React/Redux中构造动作和减缩器

我拥有的基本上是一个输出组件(
LogOutput
)和一个按钮(
RunScript
)。当用户单击按钮时,结果应显示在输出中

我想我应该做的是为按钮写一个动作:

操作/RunScript.js

export const EXEC = 'EXEC';

export function exec() {
  return {
    type: EXEC
  };
}
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;
  }
}
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;
然后将逻辑放入减速器中:

reducers/RunScript.js

export const EXEC = 'EXEC';

export function exec() {
  return {
    type: EXEC
  };
}
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;
  }
}
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;

这是可行的,但是我不明白我应该如何将生成的流程数据通过管道传输到
LogOutput
组件。

为了结束这个循环,我最后做了以下几点:

中间件/RunScript.js

export const EXEC = 'EXEC';

export function exec() {
  return {
    type: EXEC
  };
}
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;
  }
}
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;

您可能会对异步内容感兴趣