this.$refs.text.focusãundefinedããã
Misskeyã®ããŒãžã§ã³ããã€ïŒ
12.41.1âŠããããã°ã¢ããããŠãªãã
ã§ãpost-formã¯.2ã«ã¢ããããŠãå€ãããªãããâŠïŒ
ãšãããåå ç®æã®ç®æã¯ã€ããŠã
https://github.com/syuilo/misskey/blob/develop/src/client/components/post-form.vue#L330
âã®ç®æãnextTickã«ããããã£ã±ãçŽã£ã
$store.state.postFormActions.lengthããªããšãããããšã©ãŒãäžç·ã«åºãŠããããã«èšæ¶ããŠããã®ã§ããããåå ãããããªã
ç§ã®Vueã¬ãã«ãäœãã®ã§ã©ãããŠ$store.state.postFormActionsãèç¡ãªã®ãããããããªã
ç§ã®Vueã¬ãã«ãäœãã®ã§ã©ãããŠ$store.state.postFormActionsãèç¡ãªã®ãããããããªã
ç§ãããã§é æ±ããŠã
ãšãããåçŸæ¡ä»¶ãããããããªã
ã ããSafariåºæã®ãã°ãªã®ã()
è¬ãããŠãã¯ãVueåŽã®ãã°ãçãã¬ãã«
iOS 14.0 b2 / Safari Technology Preview (Release 109 (Safari 14.0, WebKit 15610.1.17.2))ã ãšæ®éã«åã
Safari ããŒãžã§ã³13.1.1 (15609.2.9.1.2) ã¯ã ã
ç¹å®ã®ãã©ãŠã¶ããŒãžã§ã³ã§ã®ã¿çºçããçŸè±¡ãšããããšïŒ
åå ããã¶ããã ãããéã£ã
https://github.com/syuilo/misskey/pull/6484
12.41.0ãŸã§ã¯å šãå ±åãããŠããªãã£ã/èµ·ããªãã£ãæ°ãããã®ã ãããããããŠPolyfillé¢é£ãªã®ã§ã¯...?
polyfillæ¶ããŠæ©ããªã£ãããéã«åããªããªã£ã説ð¥Ž
Can I use... Support tables for HTML5, CSS3, etc
https://caniuse.com/#feat=resizeobserver
倿Žç¹èª¿ã¹ããResizeObserverãåºãŠããã®ã§èª¿ã¹ãŠã¿ãŸãããSafariåŽã®å®è£
ã«åé¡ãããæ£ããã®ããã
äžå¿ãµããŒããããŠããªããšãããŠããiOS 12.4.1/12.4.6ã§åé¡ãªãã¡ãã¥ãŒãéãããšã確èªã§ããŸããã
å€ã iOS ã§åé¡ãªãåãã®ã§ããã°ãiOSã§ã¯ãšããããResizeObserverã䜿çšããã³ãŒããç¡å¹åããŠããŸãã®ãè¯ãã®ããª:thinking:
12.41.0ãŸã§ã¯å šãå ±åãããŠããªãã£ã/èµ·ããªãã£ãæ°ãããã®ã ãããããããŠPolyfillé¢é£ãªã®ã§ã¯...?
ä»åã®ãšã©ãŒã¯ããã©ã°ã€ã³ã·ã¹ãã ã«é¢é£ããããããã£ãç¡ããšãããšã©ãŒãã ãããã©ã°ã€ã³ã·ã¹ãã ãåå (ãªããããªãã®ãã¯è¬)
Polyfillã¯ç¡é¢ä¿

ãŸããã®Safariåºæãã°ã§ã¯ãªãã£ã
macOS 10.15.5 + Firefox 78.0.2
ã§ã Safari ã»ã©ç¢ºå®ã«åçŸã¯ããªã
undefinedã«ãªãã®ã¯ã©ã®æç¹ãããªã®ã(ããŒãžèªã¿èŸŒã¿çŽåŸãããšãããã以éãããšã)ãšããundefinedã«ãªã£ããšããã®ä»ã®ããããã£ã¯æãã®ããªã©ã調ã¹ããšäœãææããã«ãªããã
ã¡ãã£ãšå€åºããã®ã§åž°ã£ããããâŠãšæã£ããã©ç§ã®ç°å¢ã ãšåçŸããªããã ããª
iPhoneã ãšããŸã«åçŸãããã©iPhoneã§ãããã°ã¯å°é£
Safariã ãš this.$refs.text.focus() ã§ã³ã±ãæã¯ this.$refs ã空ã£ãœã

ãã®æã® this.$el ã¯ãã

components ã« dynamic import ã䜿ã£ãŠãå Žåãããçµãããªããš $refs ã䜿ããªãããã?
ref. https://forum.vuejs.org/t/refs-is-undefined-in-mounted/1700/4
$el ã $refs ãç¡ãã®ã¯ $store.state.postFormActions ãundefinedã«ãªã£ãŠãšã©ãŒã«ãªã£ãŠãããã³ã³ããŒãã³ãã®ããŠã³ãèªäœã倱æããŠããããšãã§ã¯ãªãïŒ
ã£ãœããª
äœããã®çç±ã§ this.$store.state.postFormActions ãundefinedãªããšããã (ãªãã§?)

ãããããã®ãšã©ãŒãåºãç¶æ
ã ãšæ°žç¶åãããŠãããã€ãã this.$store.state ã«ååšããªã?

æ¬æ¥ã¯ãããªãã¯ã

ããããããªè§£æ±ºæ¡ãšã㊠https://github.com/syuilo/misskey/commit/d327bb8ff1b8765e92d6815d244e74f0793f6157 ã§äžãããã vuex ã®ããŒãžã§ã³ãäžãããªã©ããã
ãšã¯ãã£ããã®ã® https://github.com/vuejs/vuex/compare/v3.4.0...v3.5.1 察ãã倿Žã¯ãªããªâŠ
ãæäžãð
ãããŠãã®ããããã£ãæ¶ããçŸè±¡ããã€ããèµ·ããŠããã®ããåããã°ãªã
å®éã¯æãããã®çŸè±¡ãèµ·ããŠãŠãããŸããŸæè¿ãã©ã°ã€ã³ã·ã¹ãã å®è£ ãããããã§(ïŒ)é¡åšåãããšããå¯èœæ§ããããã ããª
ãªãããããã
Chromeæ¡åŒµæ©èœã®VueDevToolã«ã¯ãVuexã®ç¶æ ãã©ã®ããã«å€ãã£ãŠããããå±¥æŽã§èŠããæ©èœãããã ãã©ãããèŠãŠäœãåãã£ããããªãããª
ããšãVuexãšVuexPersistenceã®ãœãŒã¹ã³ãŒããèªãã§ã¿ãŠæåã«å®çŸ©ããããããã£ãæ¶ããŠããŸããããªããšãèµ·ããåŸãå®è£ ã«ãªã£ãŠãªããã確èªããã
ãã ããPCã§ã¯äžåãåçŸããªãã®ã€ãã
@rinsuki åçŸããã³ããšãããïŒ
ãã£ãã·ã¥æå¹/ç¡å¹ã«ããããããã¯ãŒã¯é床æ¿é ã«ããŠãåçŸããªããããããã¯ç¡é¢ä¿ã£ãœããã©...
å šãããã£ãŠãªããè¬
@syuilo
æ€çŽ¢ããã¯ã¹ã£ãŠãã£ã±ãé¢ä¿ãªããããïŒ
@syuilo
æ€çŽ¢ããã¯ã¹ã£ãŠãã£ã±ãé¢ä¿ãªããããïŒ
ã¯ã£ããããããšã¯äœãèšããªããã©ãããã«CSSã圱é¿ãããšã¯èãã«ãã
@rinsuki ioãããªããããŒã«ã«ã®éçºç°å¢ãšãã§ãåçŸããŸããïŒ
io以å€ã§ã¯è©ŠããŠãªã
ãªãã»ã©
ioã¯åºåãå ¥ã£ãŠããããããããããäžå ·åãåŒãèµ·ãããŠãå¯èœæ§ããŒãã§ã¯ãªããª...
ãŸãã»ãŒãŒãã ãšã¯æããã©
åçŸããªãããšã«ã¯ãªããªã調æ»ãé£ãã
ä»ã®å°èŠæš¡ã€ã³ã¹ã¿ã³ã¹ãããŒã«ã«ã§ãäžå ·åã確èªããŠãŸã
ãªãã»ã©ãªãã»ã©
ããŸã«æ®éã«åãã®ãåä»
ããŒãã£ãšChromeã§ãã¹ãããŠããã©rinsukiã䜿ã£ãŠãã®Firefoxã
ã§ãã¢ã¬ã ä»®ã«Firefoxã§åçŸã§ãããšããŠãVueDevToolã䜿ããªãããããŸã調æ»ã®åœ¹ã«ã¯ç«ããªãã
ãæäžãð
ãããïŒmacã¯ç¥ããªããã©ïŒFirefoxã¢ããªã³ãã
ãããããªã®ã
ç§ã®macã®Firefoxã§åçŸããŸããã§ããâŠ
ã¹ãã¢ã®deviceUser/setTlãåå ããïŒ
ãã䜿ã£ãŠã¿ã
https://github.com/vuejs/vue-devtools/tree/dev/packages/shell-electron
çºçæ¡ä»¶ãšããŠãã¿ã€ã ã©ã€ã³ã®åãæ¿ãããããšã¹ãã¢ãã ãã«ãªãããšã倿ããïŒSafariïŒ


ã€ãŸããæ°žç¶åããã¹ãããŒã¿ã倿Žãããšã¹ãã¢ãã ãã«ãªãâŠïŒ
ãµããµã
ãã£ã¡ã ãšTLåãæ¿ããŠãåçŸããªã
@syuilo Safari? FIrefox?
Chromeãªã®ã§FireFoxã§ããã£ãŠã¿ã
Firefoxã§ãã£ãŠãåçŸããªãã£ã
@tamaina aqzã®ç°å¢ã ãšTLåãæ¿ãããš100%åçŸããïŒ
setTl èŠãŠãåã« state.tl ã«ãªããžã§ã¯ããä»£å ¥ããŠãã«éããªãã®ã§è¬
@syuilo iOS/macOS ææ°develop+ãããã°çšã³ãŒãã§ãSafariã§TLåãæ¿ãããš100%ãã¡ã«ãªããŸã
ããšããŠã£ãžã§ãããæ¿å ¥ããŠããã¡ã«ãªã£ãã®ã§persistedstateã®åé¡ã®å¯èœæ§ãé«ããªã£ã
@tamaina ããã£ãã vuex-persistedstate ãåé€ããç¶æ ã§åçŸããã確èªããŠãããããšå¬ãã
import createPersistedState from 'vuex-persistedstate';
ãš
plugins: [createPersistedState({
paths: ['i', 'device', 'deviceUser', 'settings', 'instance']
})],
ãåé€ããã°ãK
ããããšãð¥°ð¥°ð¥°
vuex-persistedstateãç¯äººã§ãããã
ãã®ãããæªãã
https://github.com/robinvdvleuten/vuex-persistedstate/blob/ff2e71119955a5253e60c998858cab59c8e3f6a6/src/index.ts#L57-L63
['i', 'device', 'deviceUser', 'settings', 'instance']
ã§åæãã以å€ã®ããããã£ããã¹ãŠæ¶ããããšãèãããšãreducerã®åŠçãäœããã®åå ã§stateã«ãã®ãŸãŸäžæžããããŠãã(?)ã¿ãããªæãã ãããªã
@syuilo persistedstateæ¶ãããçŽããŸããïŒãã£ãã·ã¥åé€ããŠäžå¿å確èªãããã©ãã£ã±ããããªæãã ã£ãïŒ
ãã以äžè©³çްã«èª¿æ»ããã«ã¯ãã£ã±ãæå ã§åçŸããªããš...
reducerã¯ãªãã·ã§ã³ã§å€éšããæå®ã§ããã£ãœã
ããã©ã«ãã®reducerã§ãã³ãŒãçã«ã¯åé¡ãªãããã«èŠããããè¬
reducerãã©ããããšããã§ã¹ãã¢ã®stateã«ã¯åœ±é¿ããªãããpersistedstateã®ã³ãŒãã«åé¡ã¯ãªãããã«èŠãã
ã¢ããããWebpackã®ãããšãã¯ïŒ
ãããå ±åå¿ããŠã
persistedstateã®ãªãã·ã§ã³ã«reducer: (state, paths) => stateã远å ãããšãããã¡ãããšåãããã«ãªããŸãããå
šãŠã®stateãlocalStorage.vuexã«èšé²ãããŸãã
Webpackã®åé¡ã ã£ããSafariã ããã°ãèµ·ããã£ãŠããšã¯èãã«ãããâŠ
ãªããžã§ã¯ãã®åç §ãå ¥ãæ¿ãã£ãŠããšãããããããšãªãã ãããã©âŠâŠ
localStorage.vuexã«ã¯ã¡ãããšreducedãªããŒã¿ãå ¥ã£ãŠããã®ã§å ¥ãæ¿ãã£ãŠã¯ãªãã£ãœã
ã€ãã«åå ãåãã£ã
Misskeyã§ã¯ãè€æ°ã®ã¿ãéã§localStorageã«æ°žç¶åãããVuexã®ç¶æ
ãåæããä»çµã¿ãããããã®åŠçã«ãã°ããã£ããå
·äœçã«ã¯ãlocalStorageã«æŽæ°ããããšãæ°žç¶åãããªãstateãŸã§localStorageã®æ
å ±ã§äžæžããããçµæçã«æ°žç¶åãããªãstateã¯æ¶ããããšã«ãªãã
åœè©²ç®æ: https://github.com/syuilo/misskey/blob/b6c3399abeab100f0991f5c77bc47919fdcbfaad/src/client/init.ts#L106-L112
store.replaceState(JSON.parse(localStorage['vuex']));
ã®éšåãããŸãããšäžæžãã§ã¯ãªãçŸåšã®stateãšããŒãžãããããªã³ãŒãã«ããã°ããã
ãã²ãšã€ã®ã¿ãããéããŠããªããããã®çŸè±¡ãçºçããããšããå ±åããã©ãã©ãããª
ããã«ã€ããŠã¯ããããããªããããããã«ããäžã«æããåœè©²ã³ãŒãã®ä¿®æ£ã§çŽãã¯ã
Most helpful comment
åçŸæ¡ä»¶
åå
Misskeyã§ã¯ãè€æ°ã®ã¿ãéã§localStorageã«æ°žç¶åãããVuexã®ç¶æ ãåæããä»çµã¿ãããããã®åŠçã«ãã°ããã£ããå ·äœçã«ã¯ãlocalStorageã«æŽæ°ããããšãæ°žç¶åãããªãstateãŸã§localStorageã®æ å ±ã§äžæžããããçµæçã«æ°žç¶åãããªãstateã¯æ¶ããããšã«ãªãã
åœè©²ç®æ: https://github.com/syuilo/misskey/blob/b6c3399abeab100f0991f5c77bc47919fdcbfaad/src/client/init.ts#L106-L112
解決ç
ã®éšåãããŸãããšäžæžãã§ã¯ãªãçŸåšã®stateãšããŒãžãããããªã³ãŒãã«ããã°ããã