Javascript 我应该如何从不同组件的减速器生成的进程中获取数据
我正试图了解如何在React/Redux中构造动作和减缩器 我拥有的基本上是一个输出组件(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
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;
您可能会对异步内容感兴趣