Closed ghost closed 6 years ago
Rules, Adduser, Todos, Schedules store에 해당하는 부분에 각각 sessionStorage를 추가하여 page refresh이후에도 해당 data들이 유지되는 것을 확인할 수 있었습니다.
saga에서 sessionStorage를 하는 action을 put할 때, component에서 sessionStorage의 data를 꺼낼 때 각각 string으로 변환, string에서 변환하는 과정을 하는 대신 reducer와 container의 수정만으로 이를 쉽게 해결할 수 있습니다. reducer에서 sessionStorage.setItem('key', JSON.stringify(data))와 같은 형태로 작성해주면 data가 list 혹은 object 등 다른 어떤 형태이던 string 형태로 넣어줄 수 있습니다. container에서는 JSON.stringify의 reverse과정인 JSON.parse()를 이용할 수 있습니다. 즉, var tmp = sessionStorage.getItem('key'); 해준 후 JSON.parse(tmp)를 container의mapStateToProps에 넣어주면 component에서는 그 data를 string형태가 아닌 원래 data를 가져올 수 있습니다. JSON.stringify와 JSON.parse를 사용하면 saga에서는 기존 data형태로 action을 put하고 component는 수정할 필요없이 기존 data 형식대로 container에서 값을 가져올 수 있습니다. 자세한 사항은 store/rules/reducer.js와 container/Rulelist.js를 참고하시면 됩니다.
const mapStateToProps = (state) => {
var sche = []
console.log(sessionStorage.getItem('tripSchedules'))
if (sessionStorage.getItem('tripSchedules')!=="undefined"){
sche = JSON.parse(sessionStorage.getItem('tripSchedules'))
}
console.log("SCHE########",sche,state.schedules.schedules)
return {
schedule : sche,
updated : state.schedules.updated
}
}
using sessionStorage
sessionStorage는 다음과 같이 쓸 수 있습니다.
현재 저장된 값은 username, token, mytrips, tripID, triptitle입니다. 이 값은 초기에는 null로 되어 있고 login 후, trip title 클릭 후 업데이트 되며 logout시
sessionStorage.clear()
를 사용하여 다시 null로 초기화됩니다. (key별로 초기화하지 않아도 됨)