我刚刚开始使用React Native,我试图找出当两个inputTexts的长度> 1时禁用和启用touchableOpacity的方法。 0
在我的touchableOpacity上,我将它设置为disabled = {true}并且它有一个带有不透明度设置的子文本。当用户输入textInput时,我想设置disabled = {false}并将文本不透明度更改为1.
What's the best way to do this in react native?
Should i put ref's on them?
Should I use a className?
setNativeProps maybe?
答案 0 :(得分:1)
如果您希望不透明度能够根据用户移动而改变,则需要在父组件的状态下设置它(不透明度)。例如,您可以这样做:
export class Parent extends React.Component {
constructor(props) {
super(props);
this.state = { opacity: 0 }
}
render() {
Some components ....
<TextInput style={{opacity: this.state.opacity}} onChangeText={ () => this.setState({opacity: 1}) } ...other props here .../>
Some components ....
}
}
您还可以将其他样式应用于TextInput
组件。
答案 1 :(得分:1)
如果你的构造函数的状态包含&#34; isDisabled&#34;的标志。和&#34; textOpacity&#34;,然后你可以在onChangeText函数中调用setState,它将改变isDisabled和textOpacity的状态。文本组件可以使用状态的textOpacity中的不透明度,touchableOpacity可以使用状态的isDisabled。
例如:
double sum_sin = 0.0, sum_cos = 0.0;
int count = 0;
#pragma omp parallel for reduction(+ : count, sum_sin, sum_cos)
for (std::size_t it = 0; it < box_neighbors[bx[i]].size(); ++it)
{
const int star_it = box_neighbors[bx[i]][it];
for (vector<int>::iterator itp = box_particles[star_it].begin();
itp != box_particles[star_it].end(); ++itp)
{
if (dist(x[i], y[i], x[*itp], y[*itp], L) < R0_two)
{
sum_sin += sin(theta[*itp]);
sum_cos += cos(theta[*itp]);
count += 1; // number of neighbours of i'th particle
}
}
}
sum_sin /= count;
sum_cos /= count;
我没有测试过上面的内容,但我相信这基本上就是你要找的东西。我们对文本更改进行检查以查看是否满足某个条件,并且根据具体情况,我们会按照您的说明更改子组件的参数。调用setState和修改props是触发重新渲染的唯一方法,因此这就是我们使用重新渲染组件的本地反应方式。