gpt4 book ai didi

javascript - 需要使用 react-redux 更新无状态组件的状态

转载 作者:行者123 更新时间:2023-11-29 20:46:43 26 4
gpt4 key购买 nike

我有一个使用 react-redux 连接到商店的组件(为了简单起见,我缩短了我的代码):

const Address = (props) => {
const { userAddresses, removeAddress } = props
let { showEdit } = props

return (
<div>
{userAddresses.map(address => (
<div key={address.id}>
<p>{address.name}</p>
<Button onClick={removeAddress.bind(this, address)}>Delete</Button>
</div>
))}

<Button
onClick={() => { showEdit = true }}>
Add new
</Button>

{showEdit ? (
// show some edit stuff here!!!
): null}
</div>
)
}

const mapState = state => {
return {
userAddresses: state.account.userAddresses,
showEdit: false
}
}

const mapDispatch = (dispatch) => {
return {
addAddress: address => dispatch(addUserAddress(address)),
removeAddress: address => dispatch(removeUserAddress(address)),
}
}

export default connect(mapState, mapDispatch)(Address)

当您单击按钮(添加新)时,应该会弹出一个表单(标记为在此处显示一些编辑内容!!!)。我知道如果 Address 是状态组件,这很容易完成。但是,我需要使用react-redux,据我所知,您必须使用无状态组件才能使用react-redux。谁能指出我正确的方向?

最佳答案

不,“必须使用无状态/功能组件”才能使用 React-Redux!

connect 接受类组件和函数组件(甚至是像 React.memo() 这样的“特殊”React 组件),它们是否使用并不重要内部或外部的组件状态(或 Hook )。

此外,作为旁注,您可以简化代码 using the "object shorthand" form of mapDispatch :

const mapDispatch = {
addAddress : addUserAddress,
removeAddress : removeUserAddress
}

(请注意,如果您的 prop 名称与函数的名称相同,那可能会更短。)

关于javascript - 需要使用 react-redux 更新无状态组件的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54164621/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com