저는 react-router v4를 사용하며 프로그래밍 방식으로 다른 URL로 이동하려고합니다 (종종 내 매장에서 이것을 필요로 함). 반응 라우터 v3에서는 매우 쉬웠습니다. 단지 browserHistory.push() 만 사용하면됩니다. 그러나 이번에는 복잡합니다. 나는 어떤 반응 성분에서든지 지적 된 here으로 사용할 수 없다. 그래서, 나는 맥락에서 라우터를 얻으려고 노력한다. 여기에 또한 라우터반응 라우터. 구성 요소의 컨텍스트로 라우터가 누락되었습니다.
'use strict';
import React, { Component } from 'react';
import { observer } from 'mobx-react';
import { BrowserRouter, Match, Miss, Link } from 'react-router';
@observer(['main_store'])
class Zone extends Component {
render() {
const { main_store } = this.props;
return (
<div>
Zone component
</div>
);
}
constructor(props) {
super(props);
}
componentDidMount() {
console.log('this Zone', this)
}
}
Zone.contextTypes = {
router: React.PropTypes.object,
history: React.PropTypes.object
}
export default Zone;
에 대한 액세스 권한을 갖고 싶어하지만, 아무것도 내 구성 요소
'use strict';
import React, { Component } from 'react';
import { observer, Provider } from 'mobx-react';
import { BrowserRouter, Match, Miss, Link } from 'react-router';
import axios from 'axios';
import Main_Store from '../main.store';
import Signin from '../../auth/components/signin.component';
import Signup from '../../auth/components/signup.component';
import Header from './header/header.component';
import Zone from '../../zone/components/zone.component';
const main_store = new Main_Store();
@observer
class Base extends Component {
render() {
const get_base = (props) => {
return (
<Provider main_store={main_store} profile={main_store.profile}>
<div>
<Header main_store={main_store} />
<main>
<Match pattern={'/*/zone-**'} component={Zone} />
<Match pattern={'/*/signin'} component={Signin} />
<Match pattern={'/*/signup'} component={Signup} />
</main>
</div>
</Provider>
)
};
return (
<BrowserRouter>
<Match pattern="/:view_type" render={(props) => get_base(props)} />
</BrowserRouter>
);
}
constructor(props) {
super(props);
}
}
Base.contextTypes = {
router: React.PropTypes.object
};
export default Base;
내 영역 구성 요소입니다. 라우터가 정의되지 않았습니다. 내가 뭘 잘못 했니? 프로그래밍 방식으로 구성 요소를 탐색하는 다른 방법
고마워요! 그게 효과가있어. 그런데 하위 구성 요소 ( )에 대해 동일한 컨텍스트 실현이 있지만 작동하지 않습니다. 아마도 그것은 소품을 주입하는 HOC 래퍼 때문일 것입니다. 하지만 난 애플 스토어에 라우터를 삽입하고 내부 구성 요소에 확산하려고 할 수 있기를 바랍니다. –
''구성 요소가 확실하게 말할 수있는 코드를보아야하지만 HOC가 컨텍스트를 위반해서는 안됩니다. . 마찬가지로 React Router v4는'router'에 접근해야하는 컴포넌트를 랩핑 할 수있는'withRouter' HOC를 추가 할 것이고'context'를 혼란에 빠뜨릴 필요가 없을 것입니다. –
폴 도움에 감사 폴. 내 질문에 존 구성 요소에 대한 코드를 추가했습니다. –