PersonCreate
컨트롤러가 있습니다. 이 구성 요소에서 인증 된 사용자 (this.props.app.session.user.role.isAdmin()
)의 역할을 확인하고 값에 따라 양식을 렌더링해야합니다.사실을 반환하지 않는 한 구성 요소 마운팅 연기
문제는 세션 개체를 생성하는 데 시간이 걸리는 것입니다. http://.../person/create
에 대한 끝점을 찾아 볼 때 this.props.app.session.user.role.isAdmin()
을 호출하려고하는데, 세션이 아직 생성되지 않았으므로 널 포인터 예외가 발생합니다.
내 라우터 파일은 다음과 같습니다.
class RootComponent extends React.Component<any, any> {
private generateSession() {
store.dispatch(SessionActions.generate());
}
public render() {
return (
<Router history={browserHistory}>
<Route path="/" component={Layout}>
<Route path="app" onEnter={this.generateSession}>
<Route path="person">
<Route path="create" component={PersonCreate} />
<Route path="update/:id" component={PersonUpdate} />
<Route path="delete/:id" component={PersonDelete} />
...
는 기본적으로
store.dispatch(SessionActions.generate())
는 asyncronous 물건의 일련을하는
Saga
를 생성합니다. (예 : 토큰 유효성 검사, 세션 정보 얻기, 로컬 저장소 새로 고침 등). 완료 후 구성 요소 렌더링을 시작해야합니다.
아이디어가 있으십니까?
public render() {
if (!this.props.app.session) {
return null;
}
을 그리고 세션이 초기화됩니다 후에 경로를 렌더링 :
당신이보고있는 문제 : 당신은 여기에이 방법에 대한 자세한 내용을보실 수 있습니다
:
그리고이 "부모"의
는의 (EnsureLoggedInContainer) 구성 요소는 그런 짓을 렌더링 '도용 렌더링'이라고합니다. 당신은 그것에 대해 구글 수 있습니다. 이를 수행하는 가장 좋은 방법은'HOC'를 이용하는 것입니다. Readmore on it [here] (https://medium.com/@franleplant/react-higher-order-components-in-depth-cf9032ee6c3e). 일단 읽었 으면 어떤 문제가 있으면 우리에게로 돌아 가라. – Panther