質問編集履歴
8
タイトル変更
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
vueコンポーネントの外でpiniaを
|
1
|
+
vueコンポーネントの外でpiniaのactionを実行しても、その内容がvueコンポーネントの中には影響されない
|
test
CHANGED
File without changes
|
7
タイトル変更
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
vueコンポーネントの外でpiniaを使
|
1
|
+
vueコンポーネントの外でpiniaを使うと、その内容がvueコンポーネントには影響されない
|
test
CHANGED
File without changes
|
6
タイトル変更
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
vue
|
1
|
+
vueコンポーネントの外でpiniaを使おうとすると、その内容がvueコンポーネントには影響されない
|
test
CHANGED
File without changes
|
5
補足追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -68,6 +68,15 @@
|
|
68
68
|
main.tsのpluginをuseしたときにpiniaのインスタンスと同じものを使えば良さそう。
|
69
69
|
ただそれだとHttpClientをvueコンポーネントの外で使うことができない。
|
70
70
|
|
71
|
+
例)vue コンポーネント内でならthisで呼べるようになっている。
|
72
|
+
```
|
73
|
+
const res = await this.$httpClient.put(..);
|
74
|
+
```
|
75
|
+
しかしstoreなどvueコンポーネント外で使う場合はimportする場合があるがそうするとstoreが使えないということになる。
|
76
|
+
```
|
77
|
+
import { httpClient } from "@/admin/network/httpClient";
|
78
|
+
```
|
79
|
+
|
71
80
|
なにか良い解決方法などあれば教えていただきたいです。
|
72
81
|
|
73
82
|
|
4
試したことを追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -17,6 +17,8 @@
|
|
17
17
|
app.use(pinia)
|
18
18
|
This will fail in production.
|
19
19
|
```
|
20
|
+
### 試したこと
|
21
|
+
#### try1) 新しくcreatePiniaする
|
20
22
|
|
21
23
|
そこで
|
22
24
|
https://qiita.com/Naoto_Ito/items/ede2b0a09f474df5e704
|
@@ -35,9 +37,36 @@
|
|
35
37
|
```
|
36
38
|
追加しました。
|
37
39
|
|
38
|
-
するとエラーは出なくなったのですが、そこで呼び出したactionの内容をコンポーネントで呼び出ししても、影響がありませんでした。
|
40
|
+
すると方法1の方ではエラーは出なくなったのですが、そこで呼び出したactionの内容をコンポーネントで呼び出ししても、影響がありませんでした。
|
41
|
+
方法2では解消しませんでした。
|
39
42
|
|
43
|
+
#### try2) vueのpluginを読み込むときに使っているpiniaのインスタンスをstoreの引数に渡してみた。
|
44
|
+
|
45
|
+
```
|
46
|
+
const app = createApp(App)
|
47
|
+
import { createPinia } from 'pinia'
|
48
|
+
const pinia = createPinia()
|
49
|
+
app.use(pinia)
|
50
|
+
app.mount('#app')
|
51
|
+
|
52
|
+
import { useAlertStore } from './store/alert';
|
53
|
+
const alertStore = useAlertStore(pinia);
|
54
|
+
|
55
|
+
class HttpClient {
|
56
|
+
alertStore.openAlert({
|
57
|
+
text: 'TEST',
|
58
|
+
type: "error"
|
59
|
+
})
|
60
|
+
|
61
|
+
....省略
|
62
|
+
|
63
|
+
const httpClient = new HttpClient();
|
64
|
+
app.config.globalProperties.$httpClient = httpClient
|
65
|
+
```
|
66
|
+
これでうまく動作しました。
|
67
|
+
|
40
|
-
|
68
|
+
main.tsのpluginをuseしたときにpiniaのインスタンスと同じものを使えば良さそう。
|
69
|
+
ただそれだとHttpClientをvueコンポーネントの外で使うことができない。
|
41
70
|
|
42
71
|
なにか良い解決方法などあれば教えていただきたいです。
|
43
72
|
|
3
抜け
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
vue3でpiniaを使っているのですが、vueコンポーネント外でpiniaを使おうとすると、その内容がコンポーネントには影響されないのですが、どうすれば影響されるようになるでしょうか?
|
1
|
+
vue3でpiniaを使っているのですが、vueコンポーネントの外でpiniaを使おうとすると、その内容がコンポーネントには影響されないのですが、どうすれば影響されるようになるでしょうか?
|
test
CHANGED
File without changes
|
2
補足
test
CHANGED
File without changes
|
test
CHANGED
@@ -58,3 +58,6 @@
|
|
58
58
|
* https://jasonwatmore.com/post/2022/07/25/vue-3-pinia-user-registration-and-login-example-tutorial
|
59
59
|
* https://github.com/cornflourblue/vue-3-pinia-registration-login-example
|
60
60
|
|
61
|
+
ここの参考ではhelperなどのコンポーネント外でstoreを呼び出して使っているようなのですが、なぜエラーが起きずに使えているのか不明
|
62
|
+
https://github.com/cornflourblue/vue-3-pinia-registration-login-example/blob/master/src/helpers/fetch-wrapper.js
|
63
|
+
|
1
追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -4,6 +4,13 @@
|
|
4
4
|
router/index.tsというルーティングを管理するファイルと
|
5
5
|
network/httpClient.tsというaxiosを管理するファイルが有り、このあたりでエラーが出た場合アラートを出したいり、ログインの管理をしています。
|
6
6
|
ただこれらのコンポーネント以外のファイルでstoreを呼び出すと以下のエラーが出ます。
|
7
|
+
|
8
|
+
storeの呼び出し
|
9
|
+
```
|
10
|
+
import { useAlertStore } from '../store/alert';
|
11
|
+
const alertStore = useAlertStore();
|
12
|
+
```
|
13
|
+
ブラウザのコンソールエラー
|
7
14
|
```
|
8
15
|
main.js:21 Uncaught Error: [🍍]: getActivePinia was called with no active Pinia. Did you forget to install pinia?
|
9
16
|
const pinia = createPinia()
|