taofoo
V2EX  ›  Vue.js

咨询一个 vue,组件的问题

  •  1
     
  •   taofoo · Nov 17, 2021 · 3181 views
    This topic created in 1818 days ago, the information mentioned may be changed or developed.

    自己是个后端,最近学了下 vue 。遇到个问题不知道怎么解决。 现在有一个列表用来展示 notes 。

    组件结构如下:

    HomePage => NoteList => NoteItem
    

    之前写的时候不是很熟悉没有太注意,在 NoteItem 中直接使用了公共状态( pinia 的 Store ),并且 NoteItem 的一些操作,比如编辑 删除都是直接操作 store 。直接导致从 NoteList 到 NoteItem 与 store ,getAllNoteApi(全量 note 的接口)耦合在一起。现在想加一个标签功能,就要求展示某个标签下的所有 note,但是整个 List 已经与 getAllNoteApi 耦合在一起。

    应该是自己的方法用错了。不知道正确的实现方式是什么呢?

    Supplement 1  ·  Nov 17, 2021

    I5jSHJ.png

    7 replies  •  2021-11-18 10:54:59 +08:00
    lalalaqwer
    lalalaqwer
    Nov 17, 2021
    2
    按指定的某个标签展示的话直接渲染的时候用条件渲染就可以了
    gadfly3173
    gadfly3173
    Nov 17, 2021 via Android
    3
    api 其实没啥必要走状态管理,单独的 model 类去请求就好了吧
    taofoo
    taofoo
    OP
    Nov 18, 2021
    4
    @lalalaqwer 过滤的话,每次请求都会筛掉一部分。数量变得不可控,而且既然要被筛掉就没有请求的必要,所以想着搞个单独的 api,但是现在的问题是,notelist 写死了全量的 api.这让 notelist 不能很好的复用
    taofoo
    taofoo
    OP
    Nov 18, 2021
    5
    @gadfly3173 notelist 其实有个触底加载 loadmore 的逻辑在里面(就在这里写死了全量的 api),想把这部分抽出来。但是 notelist 作为组件不知道有什么好方法能够把这部分逻辑抽离出来
    shikuinb
    shikuinb
    Nov 18, 2021
    6
    在接口层面做过滤吧
    fxosleeping
    fxosleeping
    Nov 18, 2021
    7
    noteitem 的编辑删除 emit 到 notelist ,noteitem 跟 store 的操作移到 notelist ,接口过滤标签就好了,改动不算大吧,如果 note 的数据只是在这个页面用到,没必要放公共的 store
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1573 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 16:25 · PVG 00:25 · LAX 08:25 · JFK 11:25
    ♥ Do have faith in what you're doing.