期望一个赋值或函数调用,而是看到一个表达式 no-unused-expressions-ReactJs

Posted

技术标签:

【中文标题】期望一个赋值或函数调用,而是看到一个表达式 no-unused-expressions-ReactJs【英文标题】:Expected an assignment or function call and instead saw an expression no-unused-expressions- ReactJs 【发布时间】:2020-04-21 02:41:46 【问题描述】:

我正在尝试创建一个预订应用程序。我对 React 很陌生,我尝试搜索,但似乎找不到问题所在。 由于我的代码有 400 多行,我将只发布我遇到错误的那些。 我在关注这篇文章https://medium.com/@kris101/building-appointment-scheduler-app-in-react-and-nodejs-d01f7294a9fd

Error screenshot

具体错误有:

第 136:11 行:期望一个赋值或函数调用,而是看到一个表达式 no-unused-expressions 第 139:11 行:期望一个赋值或函数调用,而是看到一个表达式 no-unused-expressions 第 147:7 行:期望一个赋值或函数调用,而是看到一个表达式 no-unused-expressions

我尝试禁用 eslint,但是当我这样做时,我遇到了更多错误。

handleDBReponse(response) 
    const reservations = response;
    const today = moment().startOf("day"); //start of today 12 am
    const initialSchedule = ;
    initialSchedule[today.format("YYYY-DD-MM")] = true;
    const schedule = !reservations.length
      ? initialSchedule
      : reservations.reduce((currentSchedule, reservation) => 
          const  slot_date, slot_time  = reservation;
          const dateString = moment(slot_date, "YYYY-DD-MM").format(
            "YYYY-DD-MM"
          );
          !currentSchedule[slot_date]
            ? (currentSchedule[dateString] = Array(8).fill(false))
            : null;
          Array.isArray(currentSchedule[dateString])
            ? (currentSchedule[dateString][slot_time] = true)
            : null;
          return currentSchedule;
        , initialSchedule);

    for (let day in schedule) 
      let slots = schedule[day];
      slots.length
        ? slots.every(slot => slot === true) ? (schedule[day] = true) : null
        : null;
    

    this.setState(
      schedule: schedule
    );
  

【问题讨论】:

在哪一行导致错误? 136 !currentSchedule[slot_date] 139 Array.isArray(currentSchedule[dateString]) 147 slot.length 你能把错误截图加到帖子里吗? 我更新了帖子:) 【参考方案1】:

我可以在上面的代码中看到很多 linting 问题。到目前为止,我已经修复了预期的赋值或函数调用问题。

请检查下面的代码,如果它有效,请告诉我

handleDBReponse(response) 
    const reservations = response;
    const today = moment().startOf('day'); // start of today 12 am
    const initialSchedule: any = ;
    initialSchedule[today.format('YYYY-DD-MM')] = true;
    const schedule = !reservations.length
        ? initialSchedule
        : reservations.reduce((currentSchedule: any, reservation: any) => 
            const tempSchedule = currentSchedule;
            const  slot_date, slot_time  = reservation;
            const dateString = moment(slot_date, 'YYYY-DD-MM').format('YYYY-DD-MM');
            tempSchedule[dateString] = !tempSchedule[slot_date] ? (tempSchedule[dateString] = Array(8).fill(false)) : null;
            if (Array.isArray(tempSchedule[dateString])) 
                tempSchedule[dateString][slot_time] = true;
            
            return test;
        , initialSchedule);

    for (const day in schedule) 
        const tempSchedule = schedule;
        const slots = tempSchedule[day];
        const checkEverySlot = slots.every((slot: boolean) => slot === true);
        if (slots.length && checkEverySlot) 
            tempSchedule[day] = true;
        
    

    this.setState(
        schedule,
    );

注意:最好将标识符写成驼峰式。

【讨论】:

它仍然在这一行 slot.length 生成它? (slots.every((slot) => slot === true) ? (schedule[day] = true) : null) : null; @Victoria 我已经更新了代码,请立即查看。 Dude It seams 整个应用程序有 eslint 问题。你需要一一修复。如果您的应用需要及时交付,那么我建议您暂时禁用 eslint 规则。 您忘记在 App.jsx 中导入它。从'react'导入反应,组件; 如果我这样做了,它说找不到模块:无法解析 'D:\Faculta\WT\proj\api\reservation-scheduler\src\components' 中的 'moment' 但没有文件名为 moment【参考方案2】:

这个问题是关于你使用三元语句的;

!currentSchedule[slot_date] ? (currentSchedule[dateString] = Array(8).fill(false)) : null;
Array.isArray(currentSchedule[dateString]) ? (currentSchedule[dateString[slot_time] = true) : null
slots.length ? slots.every(slot => slot === true) ? (schedule[day] = true) : null : null;

你不能以这种方式使用三元语句,你应该用单独的 if 语句替换它们

例如

if(currentSchedule[slot_date]) currentSchedule[dateString] = Array(8).fill(false)

正确使用三元组的一个例子是在分配变量时:

let myVar = x === 10 ? 'x is 10' : 'x is not 10'

【讨论】:

我按照你说的修好了,我得到的和上面的评论一样imgur.com/a/aMKkWTJ【参考方案3】:

函数handleDBReponse 似乎不是一个定义明确的函数。尝试在其名称前添加 public。喜欢public handleDBReponse(response) ...

【讨论】:

我试过了,它说 Line 124:10: Parsing error: Unexpected token public 在 vanilla javascript 中是无效语法。

以上是关于期望一个赋值或函数调用,而是看到一个表达式 no-unused-expressions-ReactJs的主要内容,如果未能解决你的问题,请参考以下文章

期望一个赋值或函数调用,而是看到一个表达式 no-unused-expressions-ReactJs

ReactJs Newbie 期望一个赋值或函数调用,而是看到一个表达式 no-unused-expressions

第 103:9 行:期望一个赋值或函数调用,而是看到一个表达式 no-unused-expressions

Object.keys - 期望一个赋值或函数调用,而是看到一个表达式 no-unused-expressions

Return 语句导致:期望一个赋值或函数调用,而是看到一个表达式 no-unused-expressions

ReactJs - 期望一个赋值或函数调用,而是看到一个表达式