reactjs - Redux store 正在更新,但组件没有重新渲染

标签 reactjs redux

我有以下 reducer :

const INITIAL_STATE = {
  wallets: [],
  selectedAccount: null,
  selectedNetwork:null  
};

export const setActive = (id, payload) => ({
   type: actionTypes.SET_ACTIVE,
   id,
   payload,
});

const editItem = wallets.map(item => (item.id !== action.id ? { 
   ...item, active: false } : { ...item, active: true }));

case actionTypes.SET_ACTIVE:
  return {
    ...state,
    accounts: [...state.wallets,editItem],
    selectedAccount: action.payload,
  };

我控制台记录了所有内容,存储正在更新,但问题是我的组件由于某种原因没有重新渲染。

setActiveFunc = item => {
   const { actions } = this.props;
   const selectedAcc = {
      name: item.name,
      address: item.address,
      active: item.active,
      id: item.id,
   };
   actions.setActive(item.id, selectedAcc);
};
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 {
  setActiveFunc = item => {
    const { actions } = this.props;
    const selectedAcc = {
      name: item.name,
      address: item.address,
      active: item.active,
      id: item.id,
    };
    actions.setActive(item.id, selectedAcc);
  };

  render() {
    const { GetWallets } = this.props;
    return (
      <View>
        {GetWallets.map(users => (
          <TouchableOpacity
            onPress={() => {
              this.setActiveFunc(users);
            }}
            key={users.id}
          >
            <UserMenuAccount
              account={`${users.name}`}
              balance={0}
              active={users.active}
              key={users.id}
            />
          </TouchableOpacity>
        ))}
      </View>
    );
  }
}

一旦 active=true,该函数将创建选中的图标,即使 reducer 正在做它的事情,图标也没有出现

这是我在组件中使用的函数,有什么建议吗?

最佳答案

您忘记在 reducer 的初始状态中添加“帐户”:

const INITIAL_STATE = {
  wallets: [],
  accounts: [],
  selectedAccount: null,
  selectedNetwork:null  
};

关于reactjs - Redux store 正在更新,但组件没有重新渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64911769/

相关文章:

javascript - 在我的 Firebase 应用程序中写入和读取数据的推荐方法是什么?

html - 一个接一个的CSS定位div

reactjs - React Native 获取 View

javascript - redux 中不止一个状态属性更改

javascript - 访问 setstate 之后执行的函数中的变量

javascript - 如果不需要任何 Prop ,我应该用 React.memo() 包装我的所有组件吗?

reactjs - 如何将 Mapbox GL 与 React 和 Redux 结合使用?

reactjs - 如何使用不变性助手来更新数组中的嵌套对象?

javascript - React Redux 状态数组变量作为 prop 传递给子组件,无限循环或空数组

javascript - 如何正确使用 redux-form 的 debounce?