我发现自己在一个组件上聚合状态.通常我知道的节点我将重新渲染,因此变化可以传播,并且状态不是全部.最近,我发现自己将这个组件的状态作为道具传递给第一个使用JSX传播属性的孩子.为了绝对清楚,这就是我的意思:
var Child = React.createClass({
handleClick: function(){
this.props.owner.setState({
count: this.props.count + 1,
});
},
render: function(){
return <div onClick={this.handleClick}>{this.props.count}</div>;
}
});
var Parent = React.createClass({
getInitialState: function(){
return {
count: 0,
owner: this
};
},
render: function(){
return <Child {...this.state}/>
}
});
Run Code Online (Sandbox Code Playgroud)
它的工作原理(http://jsbin.com/xugurugebu/edit?html,js,output),你可以随时回到这个组件来了解最新情况并尽可能保持最小状态.
所以实际的问题是,如果这不是一个好的做法,为什么.
我现在可以考虑的缺点是,使用这种方法,当所有者状态发生变化时,每个子组件都可能会重新渲染,如果是这种情况,我认为上面的内容可以在小组件树上使用.
我是一名物理学家,通常,我只想完成计算,这就是我真正需要的.不过我一直在用
int main(int argc, char* argv[])
Run Code Online (Sandbox Code Playgroud)
并且它非常令人高兴的是二进制文件在我没想到的级别变得灵活,即初始化变量
~$ ./program.exe a b c (a, b and c are numbers in this case, not letters ok?)
Run Code Online (Sandbox Code Playgroud)
所以问题是
*如何在不使用文件的情况下以这种方式(或其他)"解析"或"管道"事物?*
示例:假设"a.exe"给出了一组"XY"点(就像在电子表格上一样),我在"b.exe"上插入了什么.或者说我使用bash/awk脚本格式化"a.exe"的输出格式以将其绘制在gnuplot上.
-----------------------------------------
你好,我们又见面了.我试图这样做,但我仍然遇到问题.
为了看看我做错了什么,我写了最简单的程序
#include <cstdio>
#include <iostream>
#include <cmath>
using namespace std;
int main(int argc, char* argv[]){
for (int i = 0; i <= argc; i++)
cout << "argv[" << i << "]= " << argv[i] << endl;
getchar();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
并制作了一个包含内容的文件(假设它是"test.dat")
1
2
3
4
5
6 …
Run Code Online (Sandbox Code Playgroud) 我在bash上做一些脚本用gnuplot绘制数据.但它不起作用.
我有一个程序将数据抛出到命令行.我在文件上收集数据,然后我循环这个过程以获得所需的结果.说我有这个脚本
N = 10
./program.exe > data_$N.dat # Creating the data to be plotted
for ((i = 0 ; i<1 ; i++)) do # Dummy loop to throw all together to gnuplot
echo "set size square"
echo "set xrange[-$N-1:$N+1]; set yrange[-$N-1:$N+1];"
echo "plot '-' using 1:2"
for((j = 0 ; j <= 9 ; j++)) do
# Throwing the data to gnuplot
echo "cat data_$N.dat"
# Updating the file and overwriting on it
echo "cat data_$N.dat | xargs ./program.exe …
Run Code Online (Sandbox Code Playgroud)