V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xiangyuecn
V2EX  ›  Vue.js

大写的不服,给 vuejs 提交了个 issue,估计首个阅读的协作者没有理解其中的区别就草草 close 了

  •  
  •   xiangyuecn ·
    xiangyuecn · 2019-12-05 10:30:46 +08:00 · 7283 次点击
    这是一个创建于 1809 天前的主题,其中的信息可能已经有所发展或是发生改变。

    虽然我是 vue 新手,也没有阅读过 vue 的源码,但猪肉不管涨价多少也是猪肉呀,bug 世界里经常是越改 bug 越多也是现状呀😂😂

    然后发现他改了我的标题后,我又发现一个新的这个例子来举证这个 bug😂😂

    别的都没什么,但仅经过他一个人发了一句,和#8021 那个问题像就草草 close 我的这个问题,我是大写的不服的。

    怎么招也可以等个 1、2 天 或者 有另外有人确认这个问题,再 close 我也不会这么反应强烈。我并非针对他这个人,他们都是大佬,我只是针对这种做法,觉得有点不太合理

    中式英语写的不好,欢迎围观: https://github.com/vuejs/vue/issues/10892 ;如果过一个礼拜没有满意的答案,这个 issue 算是废了,一个礼拜后另外再开一个 isuse。

    相关 V2EX 帖子:请问:v-once 到底是个啥玩意? /t/625317

    33 条回复    2019-12-28 19:23:35 +08:00
    xiangyuecn
        1
    xiangyuecn  
    OP
       2019-12-05 10:55:01 +08:00
    目测要修复这个 bug 会很艰难,稍微瞄了一下其他 issue,那些 v-for 里面的 v-if 之类的 bug 也可能和这个 bug 是相关的。

    这种 bug 这样写才会触发,那样写又不会触发;前面有点东西会触发,前面没有东西又不会触发;典型的疑难杂症的表现,最极端的预测需要重构整个 vue core 才能修复这个问题,(没有阅读 vue 源码没有发言权,这里是瞎猜的)😂😂
    ericgui
        2
    ericgui  
       2019-12-05 11:01:22 +08:00
    换 react
    warcraft1236
        3
    warcraft1236  
       2019-12-05 11:04:56 +08:00
    这有啥我给 Feign 踢了一个 issue,没人理我,就在那放着
    shadowyue
        4
    shadowyue  
       2019-12-05 11:15:34 +08:00
    你要是想让 v-for 循环出来的内容是静态的,需要在 v-for 这个层级加 v-once
    qiaobeier
        5
    qiaobeier  
       2019-12-05 11:20:04 +08:00
    你的自我意识太强
    xiangyuecn
        6
    xiangyuecn  
    OP
       2019-12-05 11:21:57 +08:00
    @ericgui 日程安排下礼拜入门学习 react,每样来点,提升点生存能力😊

    @warcraft1236 你更惨些,我还好,目前给别人提的 issue 都有回复或相应修复
    xiangyuecn
        7
    xiangyuecn  
    OP
       2019-12-05 11:23:23 +08:00
    @qiaobeier #5 抱歉,打扰了😊
    xiangyuecn
        8
    xiangyuecn  
    OP
       2019-12-05 11:25:02 +08:00
    @shadowyue #4 不能这样乱来的😂 按需进行操作,不然改完这处 bug,引出 10 处 bug😂
    lscexpress
        9
    lscexpress  
       2019-12-05 11:26:48 +08:00
    我猜测你的 issue 是之前就有别人提了,团队应该在处理之中,就把你的给关闭了
    xiangyuecn
        10
    xiangyuecn  
    OP
       2019-12-05 11:33:24 +08:00
    @lscexpress #9 不排除这个可能,不过可能性太低,#8021 这个问题 包括 fix PR 都提了一年半了,没有任何动静
    shadowyue
        11
    shadowyue  
       2019-12-05 11:39:56 +08:00
    你这个显示时间的方法 getTime,你改成计算属性,既不会更新了。
    可能你在模板里边调用了 getTime()实打实的计算出来了一个新值。
    不过我觉得主要问题还是 vue 自己没说清楚 template 和这些东西组合时候的具体情况。
    yukiloh
        12
    yukiloh  
       2019-12-05 11:42:24 +08:00 via Android   ❤️ 1
    见过一个 maven 的中等级 bug 是 gradle 员工直播修复的,我觉得这种东西 ucup
    alphatoad
        13
    alphatoad  
       2019-12-05 11:44:24 +08:00 via iPhone
    这也算是开源项目通病了,项目管理者脾气大,直接关 issue 还算好的了,pr 碰都不碰的是非常 depression 的一件事情
    reus
        14
    reus  
       2019-12-05 11:48:44 +08:00 via Android
    人非圣贤
    laike9m
        15
    laike9m  
       2019-12-05 11:50:25 +08:00   ❤️ 4
    不懂 Vue,单从英语的角度说,你写的句子给人感觉很不礼貌,全程都是命令语气。如果我是 maintainer 估计就懒得碰了。
    xiangyuecn
        16
    xiangyuecn  
    OP
       2019-12-05 11:55:38 +08:00
    @laike9m # 这。。。怪我英语从来没有及过格(传纸条还是很 6 的),我以为机器翻译出来的"Please" 是 "请您" 的意思。。。

    百度翻译:“请您再次修改标题” -> “Please change the title again” -> “请重新更改标题” 😂😂😂 这锅我背
    Sapp
        17
    Sapp  
       2019-12-05 11:59:17 +08:00
    不是黑 vue,只是感慨一下,用了两年 react 再回过头来看 vue 这些个 api,感觉真的是又多又杂... 令人头大,不知道当初学的时候怎么看进去的
    xiangyuecn
        18
    xiangyuecn  
    OP
       2019-12-05 12:08:05 +08:00
    @shadowyue #11 静态方法如果改写成计算属性,将永远不会被再次调用,这是我的理解,实时时间获取不能用带缓存功能的计算属性。

    你运行一下测试代码,你就会发现这个 bug 不是想象中那么简单😁。
    rabbbit
        19
    rabbbit  
       2019-12-05 12:21:37 +08:00
    他这个八哥在于携带 v-once 的 template 生成之后 isOnce 和 isStatic 不知道为什么变成了 false,然后在 patchVnode 的时候被替换掉了.至于再深就没有研究

    这种 bug 规避掉就好...

    一个更明确的例子
    <div id="root">
    <div class="f">
    <div v-for="i in counter" :key="i" :ref=" 's' + i ">
    <span></span>
    <template v-once>{{getCounter()}}</template>
    </div>
    </div>
    <div class="f">
    <div v-for="i in counter" :key="i" :ref=" 's' + i ">
    <template v-once>{{getCounter()}}</template>
    </div>
    </div>
    </div>

    <script>
    const app = new Vue({
    el: "#root",
    data: {
    counter: 1
    },
    methods: {
    getCounter() {
    return this.counter
    }
    }
    });
    const interval = setInterval(() => {
    app.counter += 1;
    if (app.counter === 10) {
    clearInterval(interval);
    }
    }, 2000);
    </script>
    nbndco
        20
    nbndco  
       2019-12-05 12:22:15 +08:00   ❤️ 8
    大的开源项目维护很麻烦的,就算是这么关 issue,vue 现在依然有 270+的 open issue,按你的做法分分钟几千个 issue 而且还都需要 maintainer 时刻关注。所以一般都是第一时间 triage 然后就直接关掉了。

    开源项目基本就是这样,maintainer 一共没几个,更没有几个是全职,issue 多的一塌糊涂,绝大多数都是问“1+1 你写的计算器怎么返回了 2 而不是二”的,精力实在是顾不过来的。如果你发现他理解错了,你直接回复解释一下一般都会重开的。( PS:你的两个回复语气确实是太 rude 了)

    issue 还算好的,PR 更是麻烦。很多 PR 都是完全没和 maintainer 商量就写了的。也不是不行,但很多时候根本和项目设计理念矛盾,或者是问题百出完全没法 merge,更是难回,所以有时候就先放着,过了就忘了,然后就是楼上说的脾气大了。
    rabbbit
        21
    rabbbit  
       2019-12-05 12:22:52 +08:00
    <style>
    .f {
    float: left;
    width: 100px;
    border: 1px solid;
    }
    </style>
    skies457
        22
    skies457  
       2019-12-05 12:43:40 +08:00
    兄弟,你这个重现 bug 的 codepen 写得真让人看得头大。。。
    rabbbit
        23
    rabbbit  
       2019-12-05 12:46:43 +08:00
    测试了一下, #8021 并没有修复这个问题.
    楼主你要是不介意的话我可以再去提个 ISSUE.
    xiangyuecn
        24
    xiangyuecn  
    OP
       2019-12-05 12:47:59 +08:00
    @rabbbit #19 嗯,第二个 v-for 其实相当于 <div><template v-once></template></div>,也就是<div v-once></div>,所以这种写法是没有问题的。

    但里只要面多一个其他内容,包括纯文本节点,bug 就出现了,就是你第一个 v-for。
    xiangyuecn
        25
    xiangyuecn  
    OP
       2019-12-05 12:51:45 +08:00
    @nbndco #20 感谢你的解释。我的那个英语翻译过来的语气确实有问题,我不知道如何是好,静观其变吧,要是那个 maintainer 会提这个语言问题的话,我到时候好好跟他解释一下吧,确实我英语太烂了😂
    nbndco
        26
    nbndco  
       2019-12-05 12:59:17 +08:00 via iPhone
    @xiangyuecn 他绝对不会说语言问题的……
    xiangyuecn
        27
    xiangyuecn  
    OP
       2019-12-05 13:02:24 +08:00
    @rabbbit emmmm... 用 https://github.com/vuejs/vue/pull/8499 里面的 fix 代码 clone 下来测试,vue 版本是 2.5.17-beta.0,#8021 的问题就消失了。不过这个 PR 还没有被 Merge,新版本里测试是不会有效果的
    rabbbit
        28
    rabbbit  
       2019-12-05 13:06:06 +08:00
    @xiangyuecn
    可能是我的表述有误
    我的意思是:
    把 8499 的 pr 合并进 vdom/patch.js 进行测试, 发现楼主的问题并没有被解决.
    xiangyuecn
        29
    xiangyuecn  
    OP
       2019-12-05 13:12:13 +08:00
    @rabbbit #23 #28 哦,是我理解错了,谢谢你呀。我直接 clone 的 8499 的代码测试的,是对我的这个问题没有效果,我上午已经在 issue 里面放了截图来说明这个问题和 8021 有区别的。
    yeze322
        30
    yeze322  
       2019-12-05 13:44:21 +08:00   ❤️ 2
    1. 这个 issue 本身,一眼看上去抓不住重点。没人会第一时间去看你的 code,正文需要有个 description 把问题概括一下,然后才是 repro steps, expected behaviors。尤其是你这个样例代码写的也很不精简。issue 里的 description 和 codepen 的注释内容互相穿插
    2. 提高一下措辞会改善你的 issue 被对待的态度,这后面两条回复,全是祈使句还给加粗了,单纯从语气上来看跟要打架一样,真的
    supersonic13
        31
    supersonic13  
       2019-12-05 15:07:08 +08:00
    @yukiloh 张博老师好流弊的
    sodatea
        32
    sodatea  
       2019-12-27 15:54:46 +08:00
    刚看到 posva 另外开了个 issue 来追踪这个问题: https://github.com/vuejs/vue/issues/10906
    xiangyuecn
        33
    xiangyuecn  
    OP
       2019-12-28 19:23:35 +08:00
    @sodatea 看样子此问题还是被他们关注了。 我差点都彻底忘了这事了😂 既然新开了 issue 那我就不继续管这个问题了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2755 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 09:30 · PVG 17:30 · LAX 01:30 · JFK 04:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.