Reactjs 在功能组件中正确使用mapActionsToProps(react-redux)
但是它非常混乱,因为它不再识别Reactjs 在功能组件中正确使用mapActionsToProps(react-redux),reactjs,react-redux,Reactjs,React Redux,但是它非常混乱,因为它不再识别这个.props 如何解决这个问题?你不需要在道具之前使用这个。。功能组件将接收道具作为参数 所以代码看起来像 const mapActionsToProps = { updateRouterElem: updateRouterElem, updateRouterArr: updateRouterArr, deleteRouterElem: deleteRouterElem, } //假设updateRouterArr是全局函数 常量upd
这个.props
如何解决这个问题?你不需要在
道具之前使用这个。
。功能组件将接收道具作为参数
所以代码看起来像
const mapActionsToProps = {
updateRouterElem: updateRouterElem,
updateRouterArr: updateRouterArr,
deleteRouterElem: deleteRouterElem,
}
//假设updateRouterArr是全局函数
常量updateRouterArr=(道具)=>{
if(props.router\u addr和&props.router\u用户名和&props.router\u pw){
props.updaterouterar({
路由器地址:props.router\u addr,
路由器用户名:props.router\u用户名,
路由器:道具。路由器
})
}否则{
警报('某些字段丢失')
}
}
导出常量路由卡=(道具)=>{
//您可以从RouterCard组件调用它
updateRouterArr(道具);
返回(
...
);
}
常量mapStateToProps=状态=>({
路由器:state.router.routers,
路由器地址:state.router.router\u addr,
路由器\u用户名:state.router.router\u用户名,
路由器:state.router.router,
})
常量mapActionsToProps={
updateRouterElem:updateRouterElem,
updateRouterArr:updateRouterArr,
deleteRouteReem:deleteRouteReem,
}
导出默认连接(MapStateTrops、mapActionsToProps)(RouterCard);
简单的无论这是否有用,你都可以试试这个。我在mapActionsToProps中做了一些更改,并使用对象分解来获取道具。道具可以使用相同的名称访问
// Assuming that updateRouterArr is global function
const updateRouterArr = (props) => {
if (props.router_addr && props.router_username && props.router_pw) {
props.updateRouterArr({
router_addr: props.router_addr,
router_username: props.router_username,
router_pw: props.router_pw
})
} else {
alert('Some fields are missing')
}
}
export const RouterCard = (props) => {
// And you can call it from RouterCard component
updateRouterArr(props);
return (
<div>
...
</div>
);
}
const mapStateToProps = state => ({
routers: state.router.routers,
router_addr: state.router.router_addr,
router_username: state.router.router_username,
router_pw: state.router.router_pw,
})
const mapActionsToProps = {
updateRouterElem: updateRouterElem,
updateRouterArr: updateRouterArr,
deleteRouterElem: deleteRouterElem,
}
export default connect(mapStateToProps, mapActionsToProps)(RouterCard);
const updateRouterArr=(
{updateRouterElem,updateRouterArr,DeleteRouteReem,路由器,路由器地址,路由器用户名,路由器地址}
) => {
if(路由器地址和路由器用户名和路由器){
更新器({
路由器地址:路由器地址,
路由器用户名:路由器用户名,
路由器:路由器
})
}否则{
警报('某些字段丢失')
}
}
导出常量路由卡=(道具)=>{
返回(
...
);
}
常量mapStateToProps=状态=>({
路由器:state.router.routers,
路由器地址:state.router.router\u addr,
路由器\u用户名:state.router.router\u用户名,
路由器:state.router.router,
})
常量mapActionsToProps={
更新程序,
updateRouterArr,
删除Routerelem,
}
导出默认连接(MapStateTrops、mapActionsToProps)(RouterCard);
使用connect
将Redux连接移动到另一个文件(如index.js
或此文件旁边的YourComponentContainer.jsx
文件),或者在导入操作时将其别名<代码>从“yourReduxActionFile”导入{updateRouterArr as updateRouterArrAction}代码>
// Assuming that updateRouterArr is global function
const updateRouterArr = (props) => {
if (props.router_addr && props.router_username && props.router_pw) {
props.updateRouterArr({
router_addr: props.router_addr,
router_username: props.router_username,
router_pw: props.router_pw
})
} else {
alert('Some fields are missing')
}
}
export const RouterCard = (props) => {
// And you can call it from RouterCard component
updateRouterArr(props);
return (
<div>
...
</div>
);
}
const mapStateToProps = state => ({
routers: state.router.routers,
router_addr: state.router.router_addr,
router_username: state.router.router_username,
router_pw: state.router.router_pw,
})
const mapActionsToProps = {
updateRouterElem: updateRouterElem,
updateRouterArr: updateRouterArr,
deleteRouterElem: deleteRouterElem,
}
export default connect(mapStateToProps, mapActionsToProps)(RouterCard);
const updateRouterArr = (
{updateRouterElem, updateRouterArr, deleteRouterElem, routers, router_addr, router_username, router_pw}
) => {
if (router_addr && router_username && router_pw) {
updateRouterArr({
router_addr: router_addr,
router_username: router_username,
router_pw: router_pw
})
} else {
alert('Some fields are missing')
}
}
export const RouterCard = (props) => {
return (
<div>
...
</div>
);
}
const mapStateToProps = state => ({
routers: state.router.routers,
router_addr: state.router.router_addr,
router_username: state.router.router_username,
router_pw: state.router.router_pw,
})
const mapActionsToProps = {
updateRouterElem,
updateRouterArr,
deleteRouterElem,
}
export default connect(mapStateToProps, mapActionsToProps)(RouterCard);