如何使用方法isEqual进行反应

我在函数中使用_.isEqual方法:

const Sidebar = ({ ...props }) => {     
  function myFunction(codeMenu) {
    let menu = null;
    const listMenu = props.listMenu;

    for(var i = 0; i < listMenu.length; i++){
      if(_.isEqual(listMenu[i].code, codeMenu)){
        menu = listMenu[i];
      }
      break;
    }
  }
}
...

但我有这个错误: '_' is not defined no-undef

loadsh导入我的index.html:https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.min.js

回答(4)

2 years ago

好像你的 _ 对象没有定义 . 你输入了如 var _ = require('lodash'); 的lodash吗?

2 years ago

而不是通过cdn使用lodash,通过npm使用它 . 请运行以下命令:

npm install lodash

然后将其导入文件中

import _ from 'lodash';

然后使用它 . 实际上更优化的导入方式是:

import isEqual from 'lodash/isEqual';

所以额外的lodash包可能不包含在捆绑包中

2 years ago

您可能遇到该错误的一个原因是您的React包在lodash之前执行 . 在这种情况下, _ 不会被添加到全局范围 .

为了避免这些问题,我建议放弃CDN,而是将lodash添加为package.json文件的依赖项 . 然后,您可以将lodash作为需求或导入进行处理 .

如果您将 isEqual 导入 import isEqual from 'lodash/isequal' 并且're using a bundler such as Webpack, it will not bundle the other lodash functions you'无法导入,则会大大减少浏览器必须下载的代码量 .

2 years ago

You need to import lodash using npm install command

这里是完整的代码 - >

import lodash from lodash
 // Load the full build.
 var _ = require('lodash');
 // Load the core build.
 var _ = require('lodash/core');
 
 const Sidebar = ({ ...props }) => {

  function myFunction(codeMenu){
    let menu = null;
    const listMenu = props.listMenu;

    for(var i = 0; i < listMenu.length; i++){
      if(_.isEqual(listMenu[i].code, codeMenu)){
        menu = listMenu[i];
      }
      break;
    }
  }