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

React自定义PrivateRoute触发no-unused-expressions报错如何解决?

错误原因

你给Route组件的render属性传递的回调函数用了带花括号的箭头函数写法,花括号内部的三目运算表达式只是做了条件判断,没有被显式返回,属于未被使用的表达式,因此触发了ESLint的no-unused-expressions规则报错。

修复方案

有两种常用修复方式:

方案1:显式添加return语句

在三目运算符前加return,把运算结果作为回调函数的返回值:

import { Route, Redirect } from 'react-router-dom';
import React, { useContext } from 'react';

import AuthContext from '../contexts/AuthContext';

function PrivateRoute({ children, ...rest }) {
    const auth = useContext(AuthContext);

    return(
        <Route
        {...rest}
        render={({ location }) => {
            // 新增return返回三目运算结果
            return auth.token ? (
                children
            ) : (
                <Redirect
                to={{
                    pathname: '/login',
                    state: { from: location },
                }}
              />
            )
        }} 
      />
    )
}

export default PrivateRoute;

方案2:使用箭头函数隐式返回

去掉回调函数的花括号,直接返回表达式,不需要写return:

import { Route, Redirect } from 'react-router-dom';
import React, { useContext } from 'react';

import AuthContext from '../contexts/AuthContext';

function PrivateRoute({ children, ...rest }) {
    const auth = useContext(AuthContext);

    return(
        <Route
        {...rest}
        // 去掉花括号,直接隐式返回表达式
        render={({ location }) => auth.token ? (
                children
            ) : (
                <Redirect
                to={{
                    pathname: '/login',
                    state: { from: location },
                }}
              />
            )
        } 
      />
    )
}

export default PrivateRoute;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 23:42:03