반응형
리디렉션 후 손실되는 대응 컨텍스트
컨텍스트 만들기
export default React.createContext({
user:null,
login:()=>{}
})
컨텍스트 제어기
export default class ContextHandler extends Component{
state = {
user: null,
}
logout = () => {
this.setState({
user: null
})
}
login = user => {
this.setState({
user: user
})
};
render(){
return(
<AuthContext.Provider value={{ user: this.state, login: this.login, logout: this.logout }} >
{this.props.children}
</AuthContext.Provider>
)
}
}
앱.js
class App extends Component{
render() {
return (
<BrowserRouter>
<div>
<Switch>
<Route path="/" exact component={Header} />
<Route path="/login" exact component={Login} />
<Route path="/profile" exact component={UserProfile} />
<Route path="/inputform" exact component={InputForm} />
</Switch>
</div>
</BrowserRouter>
)
}
}
export default App;
인덱스 js
ReactDOM.render((
<ContextHandler>
<App/>
</ContextHandler>
),
document.getElementById('root'));
registerServiceWorker();
사용자 프로파일 페이지
componentDidMount() {
if (!this.context.user) {
return ( <Redirect to = "/login"/> )
}
else{
this.setState({
loading:true
})
getUserEntries(this.context.user.token,(entries)=>{
if(entries !== null){
this.setState({
userEntries:entries
})
}
})
}
}
render() {
let samples, producers
if(!this.context.user){
return(
<Redirect to="/login"/>
)
}
if (this.state.userEntries) {
samples = (this.buildList(this.state.userEntries.samples))
producers = (this.buildList(this.state.userEntries.producers))
}
로그인하면 올바른 컨텍스트를 가진 사용자 페이지로 이동한다.다른 페이지로 이동한 후 사용자 프로필 페이지로 돌아가면 컨텍스트가 손실되고 다시 로그인해야 함?
컨텍스트를 소비하는 두 가지 구성 요소는 탐색 모음과 사용자 프로필 페이지뿐입니다.참고: 나는 새로운 16.6 컨텍스트 API를 사용하고 있다. 즉 렌더링에 소비자 태그가 없다.
참조URL: https://stackoverflow.com/questions/53530624/react-context-being-lost-after-redirect
반응형
'Programing' 카테고리의 다른 글
Vue 3, 변동 변화에 대해 $emit 호출 (0) | 2022.04.06 |
---|---|
방법 대 Vue에서 계산된 방법 (0) | 2022.04.05 |
VuetifyJS, 라우터 링크가 커서로 표시되지 않음 (0) | 2022.04.05 |
셸=True로 시작된 python 하위 프로세스를 종료하는 방법 (0) | 2022.04.05 |
인쇄 함수 출력(비퍼 파이선 출력)을 플러시하려면 어떻게 해야 하는가? (0) | 2022.04.05 |