2017-10-10 1 views
0

React를 사용할 때 여전히 초보자입니다. 나는 React Router를 사용하여 나의 첫 번째 어플리케이션을 만들고 있으며, 로컬 상태를 사용하고 내 전역 범위에서 많은 요소를 피하는 것에 더 의지하려고 노력하고있다.리액션 라우터를 사용할 때 글로벌 스코프를 저장할 위치

그러나 나는 몇 가지가 필요할 것이고 나는 '글로벌'상태를 삽입해야하는지 또는 가장 좋은 방법이 여기에 있는지 확실하지 않습니다. 과거에 나는 항상 App.js 안에 넣어하지만 한 내하는 index.js 파일은 다음과 같습니다 이후, 심지어 렌더링하지 않는 라우터 4 반응 사용 :

ReactDOM.render(<Routes />, document.getElementById('root')) 

하면 전역 범위가 단지 내에서 살아야한다 경로? 그냥 모범 사례 제안을 찾고!

+0

내가 명확하게 이해 생각하지 않습니다. 질문을 다시 설명해 주시겠습니까? – cyonder

+0

네, 죄송합니다. '전역 상태'에 살고 싶은 일부 변수가 있습니다. 즉, 응용 프로그램의 어느 곳에서나 액세스 할 수 있으며 쉽게 구성 요소로 전달 될 수 있습니다. 과거에는 항상이 상태를 App 구성 요소에 넣었습니다. 그러나 React Router를 사용하고 있으므로 이제는 App 구성 요소를 렌더링하지 않고 대신 구성 요소를 렌더링합니다. Route 구성 요소에 전역 상태를 추가해야하는지 궁금합니다. 왜냐하면 렌더링되는 부분이 있거나 전역 상태를 유지하는 것이 다른 곳에서 발생했기 때문입니다. –

답변

2

상점을 사용해야합니다. 이것이 당신이 그것을 구현하는 방법입니다.

하는 index.js

import React from 'react'; 
import ReactDOM from 'react-dom'; 
import { createStore, applyMiddleware, compose } from 'redux'; 
import promise from 'redux-promise'; 
import rootReducer from "../reducers/root"; 
import Root from '../config/root'; 

let store = createStore(rootReducer, compose(
    applyMiddleware(promise), 
    window.devToolsExtension ? window.devToolsExtension() : f => f 
)); 

ReactDOM.render(
    <Root store={store} /> 
    ,document.getElementById('root') 
);\ 

Root.js

import React from 'react'; 
import { Route, BrowserRouter } from 'react-router-dom'; 
import { Provider } from 'react-redux'; 
import PropTypes from 'prop-types'; 

import Index from '../components/index'; 
import Login from '../components/login'; 
import Signup from '../components/signup'; 

const Root = ({ store }) => { 
    return(
     <Provider store={store}> 
      <BrowserRouter> 
       <div> 
        <Route exact path="/" component={Index}/> 
        <Route path="/login" component={Login}/> 
        <Route path="/signup" component={Signup}/> 
       </div> 
      </BrowserRouter> 
     </Provider> 
    ); 
}; 

Root.propTypes = { 
    store: PropTypes.object.isRequired 
}; 

export default Root; 
+0

감사! 나는 Redux를 당기는 것에 반대하지 않고 정규 React와 반대로 그 사용법을 완전히 이해하고 있는지 확신 할 수 없다. 이처럼 Redux 스토어를 사용할 때 나는 스토어 내에 모든 것을 넣는 것을 끝내기를 원합니까? 아니면 아직도 많은 로컬 스테이트를 사용하고 값 비싼 데이터를 위해 스토어를 사용할 수 있습니까? –

+0

실력을 향상 시키려면 스티븐 그라인더 (Stephen Grinder)의 "Modern React with Redux"를 시청하는 것이 좋습니다. udemy에서 그의 코스를 찾을 수 있습니다. 지역 주나 상점을 둘 수 있습니다. 개발자는 아코디언, 네비게이션 바를 토글하는 것과 같은 간단한 UI 변경을 위해 로컬 상태를 사용합니다.하지만 상점에서 사용자 상태를 관리하기 위해'actions/ui.js' 및'reducers/ui.js '를 만들 수 있습니다. 그래서 아코디언을 가게에서 토글 할 수 있습니다. 귀하의 질문에 대한 답변이라고 생각되면 제 대답에 체크 표시를하십시오. – cyonder

관련 문제