Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.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 在React中动态创建要为React路由器dom使用的函数_Javascript_Reactjs_React Router_React Router Dom - Fatal编程技术网

Javascript 在React中动态创建要为React路由器dom使用的函数

Javascript 在React中动态创建要为React路由器dom使用的函数,javascript,reactjs,react-router,react-router-dom,Javascript,Reactjs,React Router,React Router Dom,我一直在尝试整理如何动态创建函数,同时尝试按照这里的第一个示例自学 我已经整理好了如何创建路由器和交换机的东西,但是我不知道如何创建示例末尾的支持函数 我尝试的是: makeFunctions() { const { charList } = this.state; charList.map(char => char.name.split(" ")[0] = function instance(){ return <h2>

我一直在尝试整理如何动态创建函数,同时尝试按照这里的第一个示例自学

我已经整理好了如何创建路由器和交换机的东西,但是我不知道如何创建示例末尾的支持函数

我尝试的是:

makeFunctions() {
    const { charList } = this.state;
    charList.map(char =>
        char.name.split(" ")[0] = function instance(){
            return <h2>{char.name.split(" ")[0]}</h2>;
        }    
    )
}
我正在使用星球大战API swapi.dev

假设char.name.split[0]是卢克、莱娅、欧比万之类的东西

我需要制作的是:

function Luke() {
    return <h2>Luke</h2>;
  }
function Leia() {
    return <h2>Leia</h2>;
  }
function Obi-wan() {
    return <h2>Obi-wan</h2>;
  }
…来完成我下面的例子。我接近了吗?我要走几英里吗?这是可能的还是简单的只是错误的方法?任何方向都非常感谢

谢谢

回答下面突然出现的问题。我真的不太理解React或Router,我在这里有点胡扯。我从上面的链接中看到的具体示例如下:

import React from "react";
import {
  BrowserRouter as Router,
  Switch,
  Route,
  Link
} from "react-router-dom";

export default function App() {
  return (
    <Router>
      <div>
        <nav>
          <ul>
            <li>
              <Link to="/">Home</Link>
            </li>
            <li>
              <Link to="/about">About</Link>
            </li>
            <li>
              <Link to="/users">Users</Link>
            </li>
          </ul>
        </nav>

        {/* A <Switch> looks through its children <Route>s and
            renders the first one that matches the current URL. */}
        <Switch>
          <Route path="/about">
            <About />
          </Route>
          <Route path="/users">
            <Users />
          </Route>
          <Route path="/">
            <Home />
          </Route>
        </Switch>
      </div>
    </Router>
  );
}

function Home() {
  return <h2>Home</h2>;
}

function About() {
  return <h2>About</h2>;
}

function Users() {
  return <h2>Users</h2>;
}

我已经从swapi.dev获取的charList动态呈现了App{}内部的所有内容,但是我不知道如何在最后使支持函数工作,因为示例中的支持函数遵循路由器链接和交换机路由语句的命名。

我无法准确理解您的需要,但是如果你想动态地创建一些函数,你可以在一个对象中对它们进行分组

//假设你有这个数组 const Starwarschracters=[Lia,Luke,随便什么]; //我们现在可以声明一个空对象 常量starWarsFunctions={} //然后我们用这种方法创建函数 starwarschracters.mapel=>starwarsffunctions[el]=函数{return el} //然后我们可以这样调用函数 console.logstarWarsFunctions.Lia
console.logstarWarsFunctions.Luke我想这里有一种方法

window[char.name.split(" ")[0]] = function () { // your code }
然后你可以直接打电话给他们

window['Luke']();
尽管我建议使用单个函数并将char名称作为param传递,即

let charNameHeader = function (name) {
  return `<h2>${name}</h2>`;
}

当你说函数时,你的意思是你真的希望每个角色都有一条路径吗?我想我们应该从你最终想要完成的事情开始,也许可以理解你开始走的路。一般来说,函数需要提前定义记住,这在技术上是一个网页,所以代码是提取的。所以你想动态创建函数吗?我想构造函数是实现这一点的方法——但是为什么你要这么做呢?为什么要加载单独的函数,当它出现时,您可以使用一个名称作为参数的函数?谢谢@DrewReese!我更新了问题,希望能更清楚。谢谢@RobinZigmond!当我做出反应时,我是绿色的。如果这是一种愚蠢的方式,我洗耳恭听;-你能解释一下你的意思吗?@fbonds66我想你可以使用一个组件来处理所有字符,在该组件中,你可以检查路由器参数以获得名称。。。