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