Reactjs 从循环中创建的按钮中删除文本
我正在使用react native构建应用程序 我设置了一个循环,创建每个按钮内都有字母的按钮 我希望onPress将运行功能,删除按下按钮内的字母 到目前为止,我的代码如下:Reactjs 从循环中创建的按钮中删除文本,reactjs,react-native,react-native-android,Reactjs,React Native,React Native Android,我正在使用react native构建应用程序 我设置了一个循环,创建每个按钮内都有字母的按钮 我希望onPress将运行功能,删除按下按钮内的字母 到目前为止,我的代码如下: let LettersBoxes = []; var test = []; for (let i = 0; i < answerlen; i++) { console.log(test) let letter = answer[mixingLetters[i]]
let LettersBoxes = [];
var test = [];
for (let i = 0; i < answerlen; i++) {
console.log(test)
let letter = answer[mixingLetters[i]]
console.log('check',letter)
LettersBoxes.push(
<TouchableOpacity onPress={() => this.onClick(letter, test)} style={styles.boxStyle} key={i}>
<Image
source={require('../../img/parchment3.gif')}
style={{width: 40, height: 40, alignItems: 'center'}}
>
<View>
<Text
style={{fontSize:28, fontWeight: 'bold',}}>
{letter}
</Text>
</View>
</Image>
</TouchableOpacity>
);
}
return(
<View style={styles.viewStyle}>{LettersBoxes}</View>
)
}
};
让LettersBoxes=[];
var检验=[];
for(设i=0;i
{字母}
);
}
返回(
{LettersBoxes}
)
}
};
有可能做我想做的事吗 如果要动态创建组件,可以使用为字母数组中的每个字母创建的按钮,执行以下操作(在渲染方法中) 在上面的结构中,如果
this.state.letters['a']
为true,则显示该字母;否则,你就不会表现出来。简单地说,映射时请执行以下操作:
const buttons = Object.keys(this.state.letters).map(letter => {
if (this.state.letters[letter]) {
return <Button onClick={() => onSomethingClick(letter)}>{letter}</Button>;
}
else { // no letter should appear, so empty content
return <Button onClick={() => onSomethingClick(letter)}></Button>;
}
}
如果要动态创建组件,可以使用为字母数组中的每个字母创建的按钮,执行以下操作(在渲染方法中) 在上面的结构中,如果
this.state.letters['a']
为true,则显示该字母;否则,你就不会表现出来。简单地说,映射时请执行以下操作:
const buttons = Object.keys(this.state.letters).map(letter => {
if (this.state.letters[letter]) {
return <Button onClick={() => onSomethingClick(letter)}>{letter}</Button>;
}
else { // no letter should appear, so empty content
return <Button onClick={() => onSomethingClick(letter)}></Button>;
}
}
你的
onClick
函数看起来怎么样?你的onClick
函数看起来怎么样?太棒了!它的工作,现在的信真的删除了按钮,但其他按钮也被删除。。。也许我在代码中犯了一些错误?@gaidediz如果您从this.state.letters
正确复制属性,其他按钮应该保持相同的状态。您能使用扩展运算符吗?还要确保在构造函数中定义初始状态。太好了!它的工作,现在的信真的删除了按钮,但其他按钮也被删除。。。也许我在代码中犯了一些错误?@gaidediz如果您从this.state.letters
正确复制属性,其他按钮应该保持相同的状态。您能使用扩展运算符吗?还要确保在构造函数中定义初始状态。
const buttons = Object.keys(this.state.letters).map(letter => {
if (this.state.letters[letter]) {
return <Button onClick={() => onSomethingClick(letter)}>{letter}</Button>;
}
else { // no letter should appear, so empty content
return <Button onClick={() => onSomethingClick(letter)}></Button>;
}
}
onSomethingClick = (letter) => {
this.setState({
letters: {
...this.state.letters, // use Object.assign if you can't use spread operator
[letter]: !this.state.letters[letter] // switches T to F and vice-versa
}
}
}