Example #1
0
  /* 不传入 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 })
    })
  }
Example #2
0
 fetchMsgFromAPI (msgId) {
   msgService.fetch({ msgId }).then(msg => {
     if (!msg) return this.context.router.replace('/msg')
     this.setState({ msg })
   })
 }