You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React应用点击编辑链接未正确解析user.id的问题排查

问题现象

开发React JS应用时遇到对象ID配置异常:点击用户列表任意项的编辑按钮,跳转地址始终为http://localhost:3000/edit/$%7Buser.id%7D,未正确携带所点击对象的对应ID,不符合功能预期。

关联代码

UserList 列表组件代码

import React, { useContext} from 'react';
import { GlobalContext } from '../context/GlobalState';
import { Link } from 'react-router-dom';
import {
    ListGroup,
    ListGroupItem,
    Button
} from 'reactstrap';


export const UserList = () => {
  const { users } = useContext(GlobalContext);
  return (
    <ListGroup className='mt-3'>
      {users.map(user => (
         <ListGroupItem >
         <strong>{user.name}</strong>
         <div  style={{  float: "right"}}>
             <Link className='btn btn-warning mr-1' to={'/edit/${user.id}'}>Edit</Link>
             <Button color='danger' style={{  marginLeft: "10px"}}>Delete</Button>
         </div>
         </ListGroupItem>
      ))}
       
    </ListGroup>
  )
}

GlobalState 全局状态代码

import React, { createContext, useReducer} from 'react';
import AppReducer from './AppReducer';

// 初始状态
const initialState = {
    users: [
        {id: 1, name: 'user one'},
        {id: 2, name: 'user two'},
        {id: 3, name: 'user three'}
    ]
};

export const GlobalContext = createContext(initialState);

// 状态提供者组件
export const GlobalProvider = ({children}) => {
    const [state, dispatch] = useReducer(AppReducer, initialState);

    return (
        <GlobalContext.Provider value={{
            users: state.users
        }}>
            {children}
        </GlobalContext.Provider>
    )
}
错误效果

错误跳转效果截图

故障原因

问题出在Link组件的to属性写法上:
JavaScript 中支持变量插值的模板字符串必须用**反引号(,键盘数字1左侧的按键)**包裹,当前代码里用的是普通单引号'',单引号内部的${user.id}不会被解析为变量取值,会被当做纯文本直接渲染。地址中出现的%7B和%7D是大括号{}`的URL编码结果,最终就生成了带原始模板字符串片段的错误跳转路径。

修复方案

把Link标签to属性外层的单引号替换为反引号即可,修改后代码如下:

<Link className='btn btn-warning mr-1' to={`/edit/${user.id}`}>Edit</Link>

修改后${user.id}会被正确解析为当前循环项的用户ID,跳转路径会变为/edit/1、/edit/2这类符合预期的格式。


内容的提问来源于stack exchange,提问作者aldo ls

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 04:24:15