javascript - 如何使用 URL 参数更改使用 reactjs 导入文件的位置?
问题描述
我有一个反应应用程序,我正在使用 react-router-dom 来获取用户输入的 Url 参数,例如:
localhost:300/Orange
然后我可以像这样在页面上回显“橙色”:
export function test() {
return (
<Router>
<Switch>
<Route path="/:id" children={<Child />} />
</Switch>
</Router>
);
}
function Child() {
let { id } = useParams();
return (
<div>
{id}
</div>
);
}
但是,在我的应用程序中,我正在导入一个文件,我希望导入的文件是 URL 参数的值,所以如果用户访问:localhost:3000/banana
,页面将像这样导入“香蕉”:
import React, { Component } from 'react'
import {
BrowserRouter as Router,
Switch,
Route,
Link,
useParams
} from "react-router-dom";
import {
loadWeb3,
loadAccount,
loadToken,
loadExchange
} from '../store/banana'
或者如果用户访问localhost:3000/apple
:
import React, { Component } from 'react'
import {
BrowserRouter as Router,
Switch,
Route,
Link,
useParams
} from "react-router-dom";
import {
loadWeb3,
loadAccount,
loadToken,
loadExchange
} from '../store/apple'
我想我必须 {id}
像这样使用,'../store/{id}'
但是我不确定在“import”语句周围添加函数的位置。
我怎样才能做到这一点?
解决方案
要实现类似的目标,您需要动态导入。
但是由于动态导入不是使用捆绑程序(Webpack、Rollup、Parcel...)很容易实现的,我建议您找到另一种导入策略。
也许您可以创建一个导入所有商店的新文件,然后在 Child 中解析正确的功能。例子。
商店/fruits.js
import * as banana from './banana'
import * as apple from './apple'
export default {
banana,
apple
}
组件/Child.js
import React, { Component } from 'react'
import {
BrowserRouter as Router,
Switch,
Route,
Link,
useParams
} from "react-router-dom";
import fruits from '../store/fruits'
function Child() {
let { id } = useParams();
const {
loadWeb3,
loadAccount,
loadToken,
loadExchange
} = fruits[id];
return (
<div>
{id}
</div>
);
}
推荐阅读
- jhipster - Jhipster:为什么我看不到从 jdl 文件生成的元模型实体?
- python-3.x - 500 内部服务器错误“populate() 不可重入”
- android - 在 Worker 例程函数中等待 BroadcastReceiver 的返回值
- sql - 使用无序表优化删除 SQL 查询
- c# - 使用 URL 将图片从网站加载到 WPF 图像的问题
- c# - 来自存储过程的模型
- javascript - 获取特定周内某个日期的出现次数
- java - 询问用户特定的文件名
- protractor - 如何在量角器中找到全部通过、失败的测试用例?
- java - 是否可以在 JPA/Hibernate 中动态更改级联类型?