如何将navigation获取的整型id、company转字符串并存入Redux?
解决方案
1. 整型转字符串实现
推荐使用String()构造函数完成转换,兼容性最好,不会因为参数为null/undefined时抛出报错,也可以根据你的习惯选择其他转换方法,示例代码如下:
// 从navigation中获取原始参数 let id = props.route.params.oved; let company = props.route.params.company; // 转换为字符串类型 const strId = String(id); const strCompany = String(company); // 其他可选转换方式,按需选择即可 // 方式2:toString() 注意参数为null/undefined时会报错 // const strId = id.toString(); // const strCompany = company.toString(); // 方式3:空字符串拼接/模板字符串 // const strId = id + ''; // const strCompany = `${company}`; // 验证转换结果 console.log("id-->", strId); // 输出 "1" console.log("company--->", strCompany); // 输出 "465"
注意:你当前给出的打印日志中
comapny为拼写错误,实际取值时请确认参数key为company避免取值失败。
2. 转换后的值存入Redux
前提条件
你已经完成Redux的基础配置,包括store注册、对应状态切片/Reducer定义。
操作步骤
- 首先在Redux状态切片中定义对应存储字段和更新Action,以下是Redux Toolkit的示例代码:
// parameterSlice.js 示例,路径根据你的项目结构调整 import { createSlice } from '@reduxjs/toolkit' const initialState = { navId: '', navCompany: '' } const parameterSlice = createSlice({ name: 'navParams', initialState, reducers: { saveNavigationParams: (state, action) => { state.navId = action.payload.id; state.navCompany = action.payload.company; } } }) export const { saveNavigationParams } = parameterSlice.actions; export default parameterSlice.reducer;
- 然后在你获取navigation参数的组件中,触发dispatch完成存储:
import { useDispatch } from 'react-redux'; import { saveNavigationParams } from './parameterSlice'; // 替换为你自己的路径 // 组件内部逻辑 const dispatch = useDispatch(); // 点击卡片/拿到最新navigation参数并完成类型转换后,执行下面的代码即可存入Redux dispatch(saveNavigationParams({ id: strId, company: strCompany }))
适配你的使用场景
每次点击卡片拿到最新的navigation参数时,只要执行上述的「类型转换+dispatch触发Action」逻辑,即可自动更新Redux中存储的最新值。如果使用的是没有Toolkit的旧版Redux,按照你原有项目的Action定义规则传参触发dispatch即可,核心逻辑一致。
内容的提问来源于stack exchange,提问作者Ashish good luck chuck
相关产品推荐
相关产品推荐

