Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS中的动态导入()文件_Javascript_Reactjs - Fatal编程技术网

Javascript JS中的动态导入()文件

Javascript JS中的动态导入()文件,javascript,reactjs,Javascript,Reactjs,我需要导入标记文件动态切片文件的一部分,并将结果添加到变量中,并在我的React应用程序中呈现结果: import('../changelog.md').then(...) 我试图用所有的逻辑在render()方法中完成它,但我遇到了问题。我需要在哪里导入它(在类内或外部)以及如何获得将其粘贴到变量的承诺值?我会在异步方法中使用wait关键字 async function render() { var markup = await import('../changelog.md');

我需要导入标记文件动态切片文件的一部分,并将结果添加到变量中,并在我的React应用程序中呈现结果:

import('../changelog.md').then(...) 

我试图用所有的逻辑在
render()
方法中完成它,但我遇到了问题。我需要在哪里导入它(在类内或外部)以及如何获得将其粘贴到变量的承诺值?

我会在
异步方法中使用
wait
关键字

async function render() {
    var markup = await import('../changelog.md');
    // ...
}

我会在
async
方法中使用
wait
关键字

async function render() {
    var markup = await import('../changelog.md');
    // ...
}

在开始时像这样导入.md文件

import yourMDObject from '../changelog.md';
然后您可以像这样使用
fetch()

fetch(yourMDObject).then(obj =>obj.text()).then(..)

在开始时像这样导入.md文件

import yourMDObject from '../changelog.md';
然后您可以像这样使用
fetch()

fetch(yourMDObject).then(obj =>obj.text()).then(..)
这里有一个方法:

class MyComponent extends React.Component {

    state = {html: null}

    componentDidMount() {
        import('../changelog.md').then(mod => {
            this.setState({html: mod.default})
        })
    }

    render() {
        return this.state.html ? <div dangerouslySetInnerHTML={{__html:this.state.html}} /> : <p>Loading...</p>
    }
}
类MyComponent扩展了React.Component{ 状态={html:null} componentDidMount(){ 导入('../changelog.md')。然后(mod=>{ this.setState({html:mod.default}) }) } render(){ 返回this.state.html?:正在加载

} }
假设您有一个
.md
加载程序,它返回HTML

import()
返回承诺。因此,在渲染它之前,您必须等待它解决。最简单的方法是在componentDidMount中执行此操作(将所有ajax请求放在那里,这有点类似),然后将其复制到状态,以便在完成后强制重新渲染。

这里有一种方法:

class MyComponent extends React.Component {

    state = {html: null}

    componentDidMount() {
        import('../changelog.md').then(mod => {
            this.setState({html: mod.default})
        })
    }

    render() {
        return this.state.html ? <div dangerouslySetInnerHTML={{__html:this.state.html}} /> : <p>Loading...</p>
    }
}
类MyComponent扩展了React.Component{ 状态={html:null} componentDidMount(){ 导入('../changelog.md')。然后(mod=>{ this.setState({html:mod.default}) }) } render(){ 返回this.state.html?:正在加载

} } 假设您有一个
.md
加载程序,它返回HTML


import()
返回承诺。因此,在渲染它之前,您必须等待它解决。最简单的方法是在
componentDidMount
中执行(您将所有ajax请求放在那里,这有点类似),然后将其复制到状态,以便在完成后强制重新渲染。

这不是动态导入。您甚至获取了什么?您是否假设
yourMDObject
是一个URL?它存储在
.md
文件中?这似乎不寻常。这不是一个动态导入。你甚至在获取什么?您是否假设
yourMDObject
是一个URL?它存储在
.md
文件中?这似乎不寻常。不要认为您可以在React 16中使
render
async。也许当17出现时(请参阅“react悬念”),您不认为可以在react 16中使
render
async。也许当17出来的时候(见“反应悬念”)
import()
在这方面与任何其他承诺都没有什么不同。在
中调用
设置状态
,然后
。尽可能使用同步导入。这个问题不清楚为什么它是动态的,因为导入模块是已知的。假设这是一个真正的更改日志,它不会在应用程序运行时更改,因为应用程序不会自动实时更新自身。将.md文件解析为JS在构建步骤中可以使用的文件,并将其打包。
import()
与这方面的任何其他承诺没有任何区别。在
中调用
设置状态
,然后
。尽可能使用同步导入。这个问题不清楚为什么它是动态的,因为导入模块是已知的。假设这是一个真正的更改日志,它不会在应用程序运行时更改,因为应用程序不会自动实时更新自身。将.md文件解析为JS在构建步骤中可以使用的文件,并将其打包。