Reactjs React本机函数未按预期方式工作

Reactjs React本机函数未按预期方式工作,reactjs,react-native,Reactjs,React Native,以下是我的功能: setActive = (item) => { this.setState({ active: !item.active }); item.active = !item.active; console.log("Before update: ", !item.active); }; 以下是我如何使用它: import React, { Component } from "react"; imp

以下是我的功能:

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);

我只想做的是,当点击按钮时,活动对象的属性变为,但问题是当我按下第二个按钮时,它变为真,第一个项目的活动值没有变为false请就如何实现这一点提供任何建议???

但为什么在点击第二个项目后第一个项目会变为false?您的代码不起作用我的意思是,在您的代码中,您没有添加任何行来更改第一个项目SetActive函数更改您点击的唯一项目如果您的组件已连接到全局存储,则只需正确更改数据。为此,您需要更改存储数据,在它们更新后,您的页面将重新提交。要更改存储,您需要发送一个操作。在这之后,您需要在reducer函数中更改存储,并且在reducer中,您可以操作您想要更改的所有数据,因此您根本不需要本地组件状态
    ---- Array [
  Object {
    "active": false,
    "username": "Nikolozi",
  },
  Object {
    "active": false,
    "username": "ghg",
  },
]