【问题标题】:How to require underscore in react-native如何在 react-native 中要求下划线
【发布时间】:2015-11-19 04:13:24
【问题描述】:

react-native 提及的变更日志 https://facebook.github.io/react/blog/2015/04/17/react-native-v0.4.html

NPM 模块兼容性:NPM 上有很多不依赖于节点/浏览器内部的库,这些库在 React Native 中非常有用,例如 superagent、下划线……

但这对我不起作用。 这就是我通过 package.json 安装的方式

# package.json

 "dependencies": {
   "react-native": "*",
   "underscore": "^1.8.3"
   ...

我确实在 npm 依赖中看到了它

# npm ls
├─┬ react-native@0.8.0
|  ...
├── react-native-navbar@0.7.3
└── underscore@1.8.3

它确实适用于其他一些反应组件

这就是我的要求

var _ = require('underscore');

但是不行,_是未定义的

【问题讨论】:

  • 你在同一个文件中使用它吗?你能在你的问题中粘贴一些代码吗?
  • 不,underscore 库在node_modules 文件夹下,我使用的其他库如react-native-keyboardeventsreact-native-navbar 都在node_modules 下。但他们工作。我不知道它们有什么区别
  • 1.也许您正试图从不同的文件中使用它?没有包含underscore 的文件? 2.也许尝试使用浏览器的断点。 cmd +d 在您的模拟器中并使用源选项卡进行调试。
  • 我在每个文件中都试过了,但是没有用。我在控制台中调试了这个和require('underscore'),它返回Error: Requiring unknown module "underscore". If you are sure the module is there, try restarting the packager.,我做到了(关闭并重新启动npm)。但它仍然失败。

标签: javascript react-native


【解决方案1】:

如果你使用的是 ES6 模块(比如在 ReactNative 中),正确的方法是使用 import 语句:

import _ from 'lodash'

let text = _.isUndefined(route.rightButtonText) ? 'Default value' : route.rightButtonText;

【讨论】:

  • 我用它在 React 中导入 Underscore 并且它起作用了。
  • 我认为我们应该只导入这样的必要方法:``` import { flatten, union } from 'lodash'; ```
【解决方案2】:

要在 React 中成功运行 require,我就是这样做的:

  1. 安装下划线。

    npm install underscore
    
  2. 在 package.json 中定义一个依赖项

    "dependencies": {
      "react": "^0.13.*",
      "underscore": "^1.8.3"
    }
    
  3. 在要使用的函数内定义下划线。

    render() { 
      let _ = require('underscore')
      let buttonStyle = _.clone(button);
    }
    

【讨论】:

  • 不要引用我的话,但我认为在 render 方法上做一个 require 不是很明智。
【解决方案3】:

我找到了问题,问题是

我不使用它

我只需要它并尝试在控制台中测试它。

当我在某个地方使用它时,比如_.map([1, 2, 3], function(num){ return num * 3; }) 任何地方。

然后我在控制台中测试它,这次它确实需要库。

我不确定这是 npm require 还是 react-native 行为?

当你不使用库时,即使你需要它,它也不会被需要。

【讨论】:

    【解决方案4】:

    我正在使用这样的 lodash(下划线加上更多内容):

    1. 将此添加到 package.json "lodash": "^3.10.0"

    2. 在您需要的组件中,只需编写: var _ = require('lodash')

    你已经准备好了。

    如果你需要lodash,这里有更多关于lodash的信息

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-14
      • 2019-01-10
      • 1970-01-01
      • 1970-01-01
      • 2019-02-03
      • 2018-09-08
      • 2017-12-18
      • 2019-03-03
      相关资源
      最近更新 更多