/* 不传入 props 则默认使用当前 props */ updateState ({ location, params: { msgId }, userData: { username }, msg: { msgs } } = this.props) { // 情况1:处于 /msg/add,直接就是还原初始状态 if (isAddMode(location.pathname)) { return this.setState(getInitState()) } // 情况2:处于 /msg/modify/:msgId,且 state 中 msgs 不为空 if (msgs.length) { let nextState = msgs.filter(({ id }) => id === msgId)[0] if (!nextState || nextState.author !== username) { return this.handleIllegal() } return this.setState(nextState) } // 情况3:强制刷新 /msg/detail/:msgId 后,跳转到 /msg/modify/:msgId // 此时 state 中 msgs 为空,需要立即从后端 API 获取 msgService.fetch({ msgId }).then(msg => { let { id, title, content, author } = msg if (!msg || author !== username) { return this.handleIllegal() } this.setState({ id, title, content }) }) }
fetchMsgFromAPI (msgId) { msgService.fetch({ msgId }).then(msg => { if (!msg) return this.context.router.replace('/msg') this.setState({ msg }) }) }