상태에 따라 동적 React Route 구성 요소 만들기

Jayce444

저는 웹앱을 만들고 있으며 프런트 엔드에 여러 '사양'이 있으며, 그 수는 백엔드 데이터베이스의 응답을 통해 결정됩니다. 내가 원하는 것은 각 사양에 대한 React Route를 만드는 것입니다. 이 작업을 동적으로 수행하고 싶습니다. 그런 식으로 백엔드 데이터베이스에 사양을 더 추가하면 일치시키기 위해 프런트 엔드에 하드 코딩 된 경로를 추가 할 필요가 없습니다.

저는 Jumpsuit를 React / Redux 래퍼로 사용하고 있습니다. 사양의 경우 백엔드를 쿼리하고 사양을 상태의 배열에 저장합니다. 이 사양 배열을 문제없이 상태에서 얻을 수 있지만,이 사양 배열 (각 사양에 대해 하나의 경로)을 기반으로 라우트를 동적으로 생성하려고하면 생성되지 않습니다.

아래는 내 코드입니다 (가져 오기 제외). 지금은 각 동적 경로에 동일한 'Spec'구성 요소, 몇 단어를 렌더링하는 매우 간단한 구성 요소를 제공하려고했습니다. 클릭시 이러한 경로로 이동하는 버튼을 몇 개 만들었지 만 클릭하면 URL이 올바른 경로로 변경되지만 페이지는 전혀 변경되지 않습니다. 메인 컴포넌트의 소품을 콘솔에 출력하고 경로를 보면 동적 요소가없는 것을 볼 수 있습니다. 콘솔 오류가 발생하지 않습니다.

export default Component({

    componentDidMount() {
        // Check if the specs need to be loaded
        if (this.props.specs.length == 0) {
            axios.get('/getspecs')
                .then((specs) => {
                    // Load specs into state
                    QuizList.loadSpecs(specs.data.facet_counts.facet_fields.spec.filter((val, i) => {return (i%2==0)}));
                })
                .catch((error) => {
                    console.log(error);
                });
        }
    },

    loadSpecRoutes() {
        // Loop through specs array in state and create route for each
        return this.props.specs.map((spec, i) => {
            return(
                <Route path={`/spec/${spec}`} component={Spec} />
            );
        });
    },

    render () {
        return (
            <Router history={browserHistory}>
              <Route path='/' component={App}>
                <IndexRoute component={Home}/>
                <Route path='/account' component={Account}/>
                <Route path='/quizzes' component={QuizRoot}/>
                {this.loadSpecRoutes()} <-- where I want to load routes
              </Route>
            </Router>
        );
    }
}, (state) => ({
    auth: state.user.auth,
    specs: state.quizList.specs
}))

이 모든 방법이 잘못되었는지 확실하지 않지만 상태 배열의 각 값에 대해 Route 구성 요소를 어떻게 생성합니까?

유진 즈

각 사양에 대한 경로를 만드는 대신 실제로 동적 경로를 사용하고 사양을 동적으로 렌더링 할 수있는 래퍼 구성 요소를 만들 수 있습니다. 래퍼는 div 태그만으로도 아주 작은 일을 할 수 있습니다. 또는 블로그 페이지와 같이 기사 콘텐츠를 제외한 모든 스타일이 적용된 템플릿 일 수 있습니다. 이것은 각 사양이 얼마나 다른지에 따라 다릅니다.

이제 경로를 살펴보면 다음과 같이 단순화 할 수 있습니다.

<Router history={browserHistory}>
  <Route path='/' component={App}>
    <IndexRoute component={Home}/>

    <Route path='/account' component={Account}/>
    <Route path='/quizzes' component={QuizRoot}/>
    <Route path='/specs/:spec' component={Spec} />
  </Route>
</Router>

그런 다음 사양 구성 요소에서 다음과 같은 작업을 수행 할 수 있습니다.

class Spec extends Component {
  render () {
    const {spec} = this.props.params

    switch (spec) {
      case 'spec1':
        return <SpecTypeA />
      case 'spec2':
        return <SpecTypeB />
      default:
        return <GeneralSpec />
    }
  }
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

React Native에서 동적으로 구성 요소 만들기

분류에서Dev

다른 구성 요소의 상태에 따라 React 구성 요소 가시성 변경

분류에서Dev

React + Meteor. 컬렉션에 따라 비동기 상태 생성

분류에서Dev

React : 기능적 구성 요소 내에서 컨테이너의 상태 설정

분류에서Dev

React 용 Material-UI List의 React 구성 요소 상태에서 비동기 적으로 얻은 ListItem 구성 요소 사용

분류에서Dev

상태에 따라 반응 페이지에 동적으로 구성 요소 추가

분류에서Dev

동적으로 생성 된 하위 구성 요소에서 상태 변경-React

분류에서Dev

기능적 구성 요소의 React js 설정 상태

분류에서Dev

역할에 따라 동일한 React 경로의 다른 구성 요소

분류에서Dev

React / Gatsby-화면 크기에 따라 다른 구성 요소 렌더링

분류에서Dev

react-router-dom (<Route>)을 사용하여->에서 React의 기능적 구성 요소로 vars 전달

분류에서Dev

React에서 래퍼 구성 요소 만들기

분류에서Dev

React Native에서 테마 공급자 구성 요소 만들기

분류에서Dev

React Native에서 캘린더 구성 요소 만들기

분류에서Dev

동적으로 React 요소 만들기

분류에서Dev

React js 구성 요소의 목록에 검색 상자 만들기

분류에서Dev

앱에서 여러 구성 요소로 React 양식 상태를 전달하는 방법 (기능적)

분류에서Dev

React Native : 기능적 구성 요소에서 클래스 구성 요소로

분류에서Dev

경고 : 마운트 해제 된 구성 요소에서는 React 상태 업데이트를 수행 할 수 없습니다. 기능적 구성 요소

분류에서Dev

경로 또는 핸들 바 상태에 따라 구성 요소를 변경하는 방법

분류에서Dev

React에서 다른 구성 요소의 인증 상태를 어떻게 동기화 할 수 있습니까?

분류에서Dev

React : 비동기 데이터로 부모에서 자식 구성 요소 상태 업데이트

분류에서Dev

기능적 구성 요소로 Upvote 구성 요소 만들기

분류에서Dev

React 구성 요소의 상태 변경 후 예기치 않은 동작

분류에서Dev

장고 : 상태에 따라 HTML 버튼 동작을 만들기

분류에서Dev

REACT의 구성 요소에 소품을 전달하는 메서드 만들기

분류에서Dev

React Hooks-여러 동적 구성 요소와 부모 상태 공유

분류에서Dev

React Hooks-여러 동적 구성 요소와 부모 상태 공유

분류에서Dev

React Native를 사용하여 구성 요소 라이브러리 만들기

Related 관련 기사

  1. 1

    React Native에서 동적으로 구성 요소 만들기

  2. 2

    다른 구성 요소의 상태에 따라 React 구성 요소 가시성 변경

  3. 3

    React + Meteor. 컬렉션에 따라 비동기 상태 생성

  4. 4

    React : 기능적 구성 요소 내에서 컨테이너의 상태 설정

  5. 5

    React 용 Material-UI List의 React 구성 요소 상태에서 비동기 적으로 얻은 ListItem 구성 요소 사용

  6. 6

    상태에 따라 반응 페이지에 동적으로 구성 요소 추가

  7. 7

    동적으로 생성 된 하위 구성 요소에서 상태 변경-React

  8. 8

    기능적 구성 요소의 React js 설정 상태

  9. 9

    역할에 따라 동일한 React 경로의 다른 구성 요소

  10. 10

    React / Gatsby-화면 크기에 따라 다른 구성 요소 렌더링

  11. 11

    react-router-dom (<Route>)을 사용하여->에서 React의 기능적 구성 요소로 vars 전달

  12. 12

    React에서 래퍼 구성 요소 만들기

  13. 13

    React Native에서 테마 공급자 구성 요소 만들기

  14. 14

    React Native에서 캘린더 구성 요소 만들기

  15. 15

    동적으로 React 요소 만들기

  16. 16

    React js 구성 요소의 목록에 검색 상자 만들기

  17. 17

    앱에서 여러 구성 요소로 React 양식 상태를 전달하는 방법 (기능적)

  18. 18

    React Native : 기능적 구성 요소에서 클래스 구성 요소로

  19. 19

    경고 : 마운트 해제 된 구성 요소에서는 React 상태 업데이트를 수행 할 수 없습니다. 기능적 구성 요소

  20. 20

    경로 또는 핸들 바 상태에 따라 구성 요소를 변경하는 방법

  21. 21

    React에서 다른 구성 요소의 인증 상태를 어떻게 동기화 할 수 있습니까?

  22. 22

    React : 비동기 데이터로 부모에서 자식 구성 요소 상태 업데이트

  23. 23

    기능적 구성 요소로 Upvote 구성 요소 만들기

  24. 24

    React 구성 요소의 상태 변경 후 예기치 않은 동작

  25. 25

    장고 : 상태에 따라 HTML 버튼 동작을 만들기

  26. 26

    REACT의 구성 요소에 소품을 전달하는 메서드 만들기

  27. 27

    React Hooks-여러 동적 구성 요소와 부모 상태 공유

  28. 28

    React Hooks-여러 동적 구성 요소와 부모 상태 공유

  29. 29

    React Native를 사용하여 구성 요소 라이브러리 만들기

뜨겁다태그

보관