【问题标题】:Can you use 'require' in react to import a library?您可以在导入库时使用“要求”吗?
【发布时间】:2020-11-15 02:37:58
【问题描述】:

在我的 react 项目中,我正在尝试将 XML 数据从 API 调用转换为 JSON(使用名为 xml-js 的库)。

根据文档,我在父组件中导入库,如下所示

const convert  = require('xml-js')

然后尝试如下转换 API 数据

const beerList = 

'<Product>
<Name>Island Life IPA</Name>
<Volume>300ml/473ml</Volume>
<Price>$10/$13</Price>
<ABV>6.3%</ABV>
<Handpump>No</Handpump>
<Brewery>Eddyline</Brewery>
<IBU/>
<ABV>6.3%</ABV>
<Image>islandlife.png</Image>
<Country>New Zealand</Country>
<Description>Fruited IPA</Description>
<Pouring>Next</Pouring>
<IBU/>
<TapBadge/>
<Comments/>
</Product>'

const beerJs = convert(beerList,{compact: true, spaces: 4})

错误告诉我 'convert' 不是一个函数,它告诉我库没有被导入。那么使用 'require' 语法的问题是什么,如果是这样,什么替代方案可以在反应中起作用?

【问题讨论】:

标签: json reactjs xml


【解决方案1】:

这告诉我库没有被导入

没有。如果是这样的话,你甚至不会走那么远,你的require 调用会抛出一个错误。

相反,它告诉你convert 不是一个函数——它不是!在调试器中查看或记录它,您会发现它是一个内部包含多个函数的对象。你不能像函数一样调用对象。

再看看xml-jsdocs

该库提供 4 个函数:js2xml()json2xml()xml2js()xml2json()。以下是每一个的用法(请参阅以下部分中的更多详细信息):

var convert = require('xml-js');
result = convert.js2xml(js, options);     // to convert javascript object to xml text
result = convert.json2xml(json, options); // to convert json text to xml text
result = convert.xml2js(xml, options);    // to convert xml text to javascript object
result = convert.xml2json(xml, options);  // to convert xml text to json text

所以解决方案是调用convert.xml2json 而不是convert

const beerJs = convert.xml2json(beerList, {compact: true, spaces: 4})

或者你可能想要一个实际的对象而不是 JSON 字符串,那么你会使用convert.xml2js(在这种情况下spaces 选项是无用的):

const beerJs = convert.xml2js(beerList, {compact: true})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-30
    • 1970-01-01
    • 2017-04-18
    • 1970-01-01
    • 1970-01-01
    • 2013-12-16
    • 1970-01-01
    相关资源
    最近更新 更多