小编Dom*_*rov的帖子

Vue3 | Pinia - 在可组合函数中观看 storeToRefs 不起作用

我试图理解可组合项的目的。我有一个像这样的简单可组合项,并试图从 Pinia 商店观看watch不触发的状态:

import { ref, watch, computed } from "vue";
import { storeToRefs } from "pinia";
import useFlightsStore from "src/pinia/flights.js";
import usePassengersStore from "src/pinia/passengers.js";

export function useFlight() {
    const route = useRoute();

    const modalStore = useModalStore();
    const flightsStore = useFlightsStore();
    const { selection } = storeToRefs(flightsStore);

    const passengersStore = usePassengersStore();
    const { passengers, adults, children, infants } =
        storeToRefs(passengersStore);

    watch([adults, children, infants], (val) => console.log('value changes', val))


Run Code Online (Sandbox Code Playgroud)

Vue 组件中的相同功能按预期工作。

那么我们无法观察可组合项内的值?

javascript vuejs3 pinia

16
推荐指数
2
解决办法
4万
查看次数

为什么 Vue DOM 变化这么慢?

我有一个包含 2000 个输入复选框的列表。当一次选择它们时,会出现大约 2 秒的明显延迟(并且浏览器冻结)。Vue 和 React 似乎是这种情况,但 Svelte、jQuery 或 vanilla 则不然。

有了 5k+ 复选框,它就变成了一个非常烦人的 3-5 秒拦截器......

为什么重新渲染需要这么长时间?

如何使用 Vue.js 克服此更新延迟?

(分页或延迟加载的解决方案并没有真正解决问题;他们只是在避免问题。)

下面是 Vue 中的代码,后面是 Svelte 中的相同示例。

<script setup>
import { ref } from 'vue'
const items = ref(Array.from({length: 2000}, (v, k) => k));
let selected = ref([]);
function selectAll() {
  selected.value = items.value.map(i => i);
}
</script>

<template>
    <button @click="selectAll">
    Select all
  </button>
  <button @click="selected = []">
    Select none
  </button>
  <label v-for="n in items">
    <input v-model="selected" type="checkbox" :value="n">
    {{ …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs vue.js svelte vuejs3

6
推荐指数
1
解决办法
1796
查看次数

将对象的对象转换为对象的数组(PHP、Laravel)

我正在使用 Eloquent 从数据库返回一些数据并放入数组对象中。我对浏览器的响应对象以这种格式显示:

// response()->json($response, 200);


[{
"id": 1,
"name": "car",
"make": ["bmw", "ford"]
"order": 1
},
{
"id": 2,
"name": "bike",
"make": ["aprilia"]
"order": 2
},
{
"id": 3,
"name": "boat",
"make": []
"order": 3
 },
(...)
]
Run Code Online (Sandbox Code Playgroud)

不过,在返回之前,我想在服务器端对其进行过滤。所以我只返回在"make"数组中保存值的对象。

所以我正在运行这个循环:

        foreach ($response as $key => $transport) {

            if (count($response[$key]['make']) == 0) {
                unset($response[$key]);
            };

        }

Run Code Online (Sandbox Code Playgroud)

php 所做的是将数组转换为对象,并为每个内部对象添加键。所以现在我的$response样子:


// response()->json($response, 200);


{ // notice here it has changed from array to object
  "0": { // notice …
Run Code Online (Sandbox Code Playgroud)

php arrays object type-conversion laravel

5
推荐指数
1
解决办法
2372
查看次数

返回节点边缘单击的节点

具有以下代码,其中每个 P 标签由边距分隔:

document.addEventListener("click", function(e) {
  console.log(e.target);
});
Run Code Online (Sandbox Code Playgroud)
* {
  box-sizing: border-box; 
}
div {
  height: 100px;
  border: 1px solid blue;
}
p {
  margin: 20px;
  border: 1px solid red;
}
Run Code Online (Sandbox Code Playgroud)
<div>
  <p>
    Lorem
  </p>
  <p>
    Lorem 2
  </p>
</div>
Run Code Online (Sandbox Code Playgroud)

当我捕获P标签之间的点击事件时,返回的节点是DIV。点击P标签边距后如何返回P标签?我不允许将边距更改为填充,这将是一个简单的解决方案。

html javascript events dom click

2
推荐指数
1
解决办法
58
查看次数

标签 统计

javascript ×3

vuejs3 ×2

arrays ×1

click ×1

dom ×1

events ×1

html ×1

laravel ×1

object ×1

php ×1

pinia ×1

reactjs ×1

svelte ×1

type-conversion ×1

vue.js ×1