反应中的使用方法isEqual如何

时间:2018-12-10 11:22:57

标签: reactjs

我在函数中使用_.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 个答案:

答案 0 :(得分:1)

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

npm install lodash

,然后将其导入到文件

import _ from 'lodash';

,然后使用它。实际上,更理想的导入方式是:

import isEqual from 'lodash/isEqual';

以便捆绑包中可能不包含多余的lodash包

答案 1 :(得分:0)

似乎未定义您的_对象。您是否输入了var _ = require('lodash');之类的lodash吗?

答案 2 :(得分:0)

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

为避免此类问题,我建议放弃CDN,而是将lodash添加为package.json文件的依赖项。然后,您可以将lodash视为需求或导入。

如果将isEqual导入为import isEqual from 'lodash/isequal',并且使用的是诸如Webpack之类的捆绑器,它将不会捆绑您不导入的其他lodash函数,从而大大减少了浏览器的代码量必须下载。

答案 3 :(得分:0)

您需要使用npm install命令导入lodash

完整代码如下->

 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;
    }
  }