Отправка переменных из одного класса в маршруты. js (без реквизита) - PullRequest
0 голосов
/ 03 апреля 2020

Я пытаюсь сделать маршрут маршрута Reacti динамическим c, и для этого мне нужно отправить переменную clickedSubprojectName моим маршрутам. js.

прямо сейчас мои routes.js взгляды как это:

import React from 'react';

const Projects = React.lazy(() => import('./views/Projects'));
const Subproject= React.lazy(() => import('./views/Subproject'));

const routes = [
  { path: '/projects', exact: true, name: 'Projects', component: Projects },
  { path: "/projects/subprojects", name: 'Subproject', component: Subproject},

];

export default routes;

В моем Projects.js я создал state variable, который сохраняет имя подпроекта, на котором пользователь щелкнул. И я хочу передать эту переменную из моего класса Projects в мои маршруты. js, чтобы я мог установить путь в маршрутах, например, так:

{ path: "/projects/"+clickedSubprojectName, name: 'Subproject', component: Subproject}

У меня есть Я уже пытался экспортировать постоянную переменную из моего Projects.js следующим образом:

    export const clickedSubprojectName={
      clickedSubprojectName: this.state.clickedSubprojectName}

, а затем импортировал import { clickedSubprojectName} from './views/Subproject' в мои маршруты. js, но на самом деле это не работает. Это устанавливает clickedSubprojectName в качестве значения по умолчанию для переменной состояния при первом отображении компонента Projects и не обновляется при изменении переменной состояния.

Надеюсь, у кого-нибудь есть решение этой проблемы, потому что я еще ничего не нашел в stackoverflow

Спасибо

1 Ответ

0 голосов
/ 03 апреля 2020

для динамических c маршрутов .. вы можете использовать что-то вроде ..

{ path: "/projects/:subproject", name: 'Subproject', component: Subproject},

, и вы можете вызвать этот маршрут с помощью history.push("/projects" + this.state.clickedSubprojectName)

export const clickedSubprojectName={
      clickedSubprojectName: this.state.clickedSubprojectName}

это определенно выиграно t работать .. эта переменная экспортируется один раз и импортируется один раз. Так что он всегда будет возвращать значение по умолчанию.

...