我有以下 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/