[youzan/vant][new feature] List 考虑错误情况,增加 error-text 属性 #2567

2024-05-22 297 views
7

Fixes #2567

  • props增加errorText
  • data增加error
  • load事件增加参数:handleError

回答

9

? 很棒的功能

提一点小建议,目前 vant 会尽量避免在 i18n 文件中添加新的字段(除非是比较通用的),避免体积膨胀,所以能否把 error-text 的默认值去除,

0

@chenjiahan 谢谢。我先去掉吧。稍等下

4

@chenjiahan done.

9

刚想了一下,控制 error 状态可以考虑使用传入 props 配合 sync 修饰符来做

<van-list :error.sync="error" />
export default {
  data() {
    error: false
  },

  methods: {
    onLoad() {
      ajax().catch(() => {
        this.error = true;
      })
    }
  }
}

这样的好处是不依赖传入回调函数,使用者可以更灵活地控制错误状态,你看下是否能完成你的需求~

1

@chenjiahan 请教一下:

  1. .sync的jest测试怎么写?

    const wrapper = mount(List, {
     propsData: {
      errorText: 'Request failed. Click to reload...',
      error: true
    },
    listeners: {
      'update:error': ($event) => {
        // 这个如何为error赋值?下面的写法是错的
        this.error = $event;
      }
    }
    });
  2. 为什么mockOffsetParent能够模拟父元素位置的偏移?我看了代码,就是为父元素的dom添加了offsetParent这个响应式变量啊

3
  1. 可以用 wrapper.setProps({ error }) 来更新属性
  2. offsetParent 是为了跳过代码里的 offsetParent !== null 这个判断
0

@chenjiahan ci检测说packages/dialog/test/index.spec.js不通过,我没有改过对应的代码

FAIL  packages/dialog/test/index.spec.js
  ● before close
    expect(received).toBeFalsy()
    Received: [[]]
      43 | 
      44 |   cancel.trigger('click');
    > 45 |   expect(wrapper.emitted('cancel')).toBeFalsy();
         |                                     ^
      46 | 
      47 |   wrapper.setProps({
      48 |     beforeClose: (action, done) => done()
      at Object.toBeFalsy (packages/dialog/test/index.spec.js:45:37)
9

Sorry 是我的失误,已经修复了

7

Merge 了哈~ 会在下个版本发布

5

@chenjiahan 这是我第一次PR,以后有机会多多指教哈

7

哈哈,非常欢迎,期待你的下个 PR~