这是我的功能:
setActive = (item) => {
this.setState({ active: !item.active });
item.active = !item.active;
console.log("Before update: ", !item.active);
};
这是我的用法:
import React, { Component } from "react";
import { Text, View, Image, TouchableOpacity } from "react-native";
import { styles } from "./styles";
import { connect } from "react-redux";
import { createStructuredSelector } from "reselect";
import { getAccounts } from "../../redux/user/selectors";
const UserMenuAccount = ({ active, account, balance }) => (
<View style={styles.accountContainer}>
<Image
source={require("../../../assets/Usermenu/check.png")}
style={[styles.icon, { opacity: active ? 1 : 0 }]}
/>
<Text style={styles.text}>{account}</Text>
<Text style={[styles.text, { opacity: 0.5 }]}>{balance} ETH</Text>
</View>
);
class UserMenuAccounts extends Component {
state = {
active: false,
usersList:[]
};
setActive = (item) => {
this.setState({ active: !item.active });
item.active = !item.active;
console.log("Before update: ", !item.active);
};
render() {
const { GetAccounts } = this.props;
return (
<View>
<Text style={{ opacity: 0.5, fontSize: 16, fontWeight: "bold" }}>
Click to switch
</Text>
<View>
{GetAccounts.map((users, index, active) => {
return (
<TouchableOpacity
onPress={() => {
this.setActive(index, users, active);
this.disableActive(users);
}}
key={index}
>
<UserMenuAccount
account={`${users.username}`}
balance={0}
active={users.active}
key={index}
/>
</TouchableOpacity>
);
})}
</View>
</View>
);
}
}
const mapStateToProps = createStructuredSelector({
GetAccounts: getAccounts,
});
export default connect(mapStateToProps, null)(UserMenuAccounts);
GetAccounts 是Redux存储区中的选择器。
它包含以下对象数组:
---- Array [
Object {
"active": false,
"username": "Nikolozi",
},
Object {
"active": false,
"username": "ghg",
},
]
我要做的是,单击按钮时 active 对象的属性更改为 true ,但是问题是当我第二次按下时按钮并变为true,则第一项的有效值不会更改为false ,请提供有关如何实现此目标的任何建议?