添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
机灵的盒饭  ·  Run Grafana Docker ...·  3 月前    · 
逃课的充电器  ·  RFC: Treat ...·  6 月前    · 

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement . We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account 第一次进入小程序,读取storage中的userInfo数据,如果存在执行更新操作,执行更新操作时报component.$store的值是undefined,后续的data就取不到值

[复现问题的步骤]

  • 第一次进入小程序,读取storage的数据
  • 执行dispatch操作,更新redux中的userInfo数据
  • // app.js
    @connect(({user}) => {
      return user
    }, (dispatch) => {
      return {
        onSetUserInfo () {
          dispatch(setUserInfoAction())
    componentDidMount () {
        this.props.onSetUserInfo()
    // actions/user.js
    export const setUserInfoAction = () => {
      // 读取storage中的userInfo,写入到redux中
      return async (dispatch) => {
        try {
          let data = await Taro.getStorage({
            key: 'userInfo'
          // console.log(data)
          dispatch({
            type: SET_USER_INFO,
            value: data.data
        } catch (e) {
          // console.log(111111, e)
          dispatch({
            type: SET_USER_INFO,
            value: null
    //reducers/user.js
    import {INIT_USER_INFO, REMOVE_USER_INFO, SET_USER_INFO} from "../constants/user";
    // 设置默认数据
    const defaultState = {
      userInfo: null
    export default function user (state = defaultState, action) {
      // let newState = JSON.parse(JSON.stringify(state))
      switch (action.type) {
        case INIT_USER_INFO:
          return {
            ...state,
            userInfo: action.value
          break
        case SET_USER_INFO:
          console.log(action, '实际打入的数据')
          if (action.value) {
            return {
              ...state,
              userInfo: action.value
          } else {
            return state
          break
        case REMOVE_USER_INFO:
          return {
            ...state,
            userInfo: null
          break
        default:
          return state
    中间过程为什么会报错

    Taro v1.2 及以上版本已添加 taro info 命令,方便大家查看系统及依赖信息,运行该命令后将结果贴下面即可。

  • 操作系统: [macOS High Sierra 10.13.6]
  • Taro 版本 [v1.2.15]
  • Node.js 版本 [v.10.15.0]
  • 报错平台 [weapp]
  • 欢迎提交 Issue~

    如果你提交的是 bug 报告,请务必遵循 Issue 模板的规范,尽量用简洁的语言描述你的问题,最好能提供一个稳定简单的复现。🙏🙏🙏

    如果你的信息提供过于模糊或不足,或者已经其他 issue 已经存在相关内容,你的 issue 有可能会被关闭。

    Good luck and happy coding~

    Hello~

    您的问题我们无法复现。如果有空的话还请拔冗提供一个简单的复现 demo,否则这个 issue 将在 15 天后被自动关闭。

    如果您在这 15 天中更新更多信息自动关闭的流程会自动取消,如有其他问题也可以发起新的 Issue。

    Good luck and happy coding~

    @justbecoder 复现不了。这句话也没看懂,你给的代码也并没有体现: “如果存在执行更新操作,执行更新操作时报component.$store的值是undefined,后续的data就取不到值”。

    像你提供的代码一样在 app.js dispatch 一个 action 初始化 userInfo 并没有报错,即使后面再在页面 dispatch 一个 action 修改 userInfo 也没有问题。建议将 CLI 和依赖都升级到最新版本后再试试。

    如果还有问题,可以提供完整的 demo 我们跑一下。

    我也遇到了同样的问题,报错:TypeError: Cannot read property 'data' of undefined

    感觉像是在 app.js 里面不能使用 @connect ,在其他页面使用同样的代码,就不会报错。

    很有帮助,感谢