反应本机:如何在已经存在状态时修改变量状态?
我想创建4个按钮,当我单击其中一个按钮时,将出现文本,而其他文本消失了。
但是,当我使用解决方案单击时,文本仍然相同。我可以更改初始值,但是我无法更改。
这是我的代码:
const [couleur, setCouleur] = useState("");
var [state, setState] = useState({
v1Visible: false,
v2Visible: false,
v3Visible: true,
v4Visible: false,
});
async function cop() {
await navigator.clipboard.writeText(couleur);
alert("Couleur copiée");
}
useEffect(() => {
if (couleur !== "") {
cop();
}
}, [couleur]);
state = {
v1Visible: false,
v2Visible: false,
v3Visible: false,
v4Visible: true,
};
这里的couleur部分是另一个状态。这是必要的,是我页面的第一部分。
<Text style={styles.texteti}>Heading, paragraphe, lien</Text>
<TouchableOpacity
onPress={() =>
setState({
v1Visible: false,
v2Visible: true,
v3Visible: false,
v4Visible: false,
})
}
>
<Text>Here</Text>
</TouchableOpacity>
{state.v1Visible && (
<View>
<Text>View 1</Text>
</View>
)}
{state.v2Visible && (
<View>
<Text>View 2</Text>
</View>
)}
{state.v3Visible && (
<View>
<Text>View 3</Text>
</View>
)}
{state.v4Visible && (
<View>
<Text>View 4</Text>
</View>
)}
</View>
texteti: {
fontSize: 16,
marginLeft: "7%",
fontWeight: "600",
},
I want to create 4 buttons and when I click on one of them, a text will appeare while the other texts disappered.
However, when I click with my solution, the text is still the same. I can change the initial values but I can't change after.
Here is my code:
const [couleur, setCouleur] = useState("");
var [state, setState] = useState({
v1Visible: false,
v2Visible: false,
v3Visible: true,
v4Visible: false,
});
async function cop() {
await navigator.clipboard.writeText(couleur);
alert("Couleur copiée");
}
useEffect(() => {
if (couleur !== "") {
cop();
}
}, [couleur]);
state = {
v1Visible: false,
v2Visible: false,
v3Visible: false,
v4Visible: true,
};
The couleur part here is the other state. It is necessary and is the first part of my page.
<Text style={styles.texteti}>Heading, paragraphe, lien</Text>
<TouchableOpacity
onPress={() =>
setState({
v1Visible: false,
v2Visible: true,
v3Visible: false,
v4Visible: false,
})
}
>
<Text>Here</Text>
</TouchableOpacity>
{state.v1Visible && (
<View>
<Text>View 1</Text>
</View>
)}
{state.v2Visible && (
<View>
<Text>View 2</Text>
</View>
)}
{state.v3Visible && (
<View>
<Text>View 3</Text>
</View>
)}
{state.v4Visible && (
<View>
<Text>View 4</Text>
</View>
)}
</View>
texteti: {
fontSize: 16,
marginLeft: "7%",
fontWeight: "600",
},
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
嗨,我认为最好像这样声明您的状态变量并在另一个状态下设置选定的值,您可以更简化此答案,希望它对您有用
Hi i think better to declare your state variable like this and set selected value in another state, you can more simplify this answer, i hope it works for you
您应该仅使用
状态
使用SetState
方法更改状态。因此,删除此部分:
此刻更新状态的正确方法是:
You should only change state of
state
withsetState
method.So remove this part:
The correct way to update state at this moment would have been: