将参数传递给React Router中的React元素

亚伦·埃瑟里奇

我创建了一个名为Jobscard的元素,该元素将JobsList作为参数。我也试图使用react-router将此JobsCard设置为Router。

我已经研究了这个问题,他们在网络上似乎没有类似的问题,所有解决方案和指南都使用react组件,但这不适用于react Elements。这可能吗?

import React from 'react';
import { projectList } from './projectList';
import JobsCard from './JobsCard';
import { jobsList } from './jobsList';
import CardList from './CardList';
import Ham from './hamburger';
import { Route, Switch } from 'react-router-dom';
import { BrowserRouter } from 'react-router-dom';
import jobsList from './jobsList'

const App = () => {
    return(

            <div className='blue1  center'>

                    <BrowserRouter>
                        <Ham />

                        <Switch>
                            <Route exact path="/" render{props => <JobsCard jobsList={jobsList}> </JobsCard> }/>

                           <Route path="/projects" component={<CardList projectList={projectList}/>}/> 
                        </Switch>
                    </BrowserRouter>


            </div>

  )
}

export default App;

JobsCard元素是

import React from 'react';
import Job from './Job.js'

const JobsCard = ({jobsList}) => {
    const cardDraw = jobsList.map((proj, i) => {
        return <Job key={i} title={jobsList[i].title} 
        website={jobsList[i].website} description={jobsList[i].description} 
        logo={jobsList[i].logo} company={jobsList[i].company} years={jobsList[i].years}/>
    })
    return (
        <div className=" cf justify-center ma3">
                {cardDraw}


        </div>
    );
}

export default JobsCard;

jobsList看起来像这样

import energyxchain from ''
export const jobsList = [
    {   title: '',
        website: '',
        description: '',
        logo: ,
        company: '',
        years: '2018-2019'
    },
    {
        title: '',
        company: '',
        website: '',
        logo: '',
        description: '',
        years: '2017-2018'
    }];

我希望JobsCard是一条路线。

约瑟夫·D

路线渲染道具

render具有内联函数的,仅在必须将范围内的变量传递给要呈现的组件时才应使用

您应不使用component道具与内联函数通过调查范围内的变量,因为你会得到期望分量卸除/重新装载。

因此,您的路线应为ff:

使用componentprop(不应传递变量):

<Route
  exact path="/"
  component={JobsCard}
/>

使用render道具:

<Route
  exact path="/"
  render={routeProps => (<JobsCard {...routeProps} jobsList={jobsList} />)}
/>

通常,您应该将导航与内部数据管理分开(使用redux connect)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章