ã¿ã¤ãã«éããæ¬è¨äºã¯ããããã£ã®å¤ã夿´ããéã«è¦å(Vue warn)ãçºçããéã®åå ã¨å¯¾å¦æ¹æ³ãè¨è¼ãã¦ããã¾ãã
ã¯ããã«
æ¥åã§Vue.jsããã¼ã¿ãã¤ã³ãã£ã³ã°ç¨åº¦ã«ä½¿ç¨ãã¦ãã¾ããããæ¬æ ¼çï¼ã³ã³ãã¼ãã³ãåã親åã§ã®ãã¼ã¿éä¿¡ãªã©ï¼ã«ä½¿ç¨ããããã«ãªãã¾ããã
ã£ã¦ãã¨ã§ãUdemyã®æ°æ¥ã»ã¼ã«ãæ©ã«ä»¥ä¸ã³ã¼ã¹ãè³¼å ¥ãã¾ããã
ä¸è¨ã³ã¼ã¹ã¯è±èªã§ã®è§£èª¬ã¨ãªãã¾ãããã¬ãã¥ã¼ä»¶æ°ãå¤ããªãããé«è©ä¾¡ãããã«èªåç¿»è¨³ã®æ¥æ¬èªåå¹ããµãã¼ãããã¦ãã¾ããï¼ãã¾ãæ£ç¢ºã§ã¯ããã¾ãããããªãã¨ãªãæå³ã¯çè§£ã§ãããã¯ããï¼
readme.mdã¨ãä½ã£ã¦ã¾ãããã以ä¸ã«å¦ç¿ç¨ãªãã¸ããªã使ãã¦ãã¾ãã以ä¸ãªãã¸ããªã®vue-component-sampleãå®è£ ããä¸ã§èª¿ã¹ããã¤ã³ããè¨è¼ãã¦ããã¾ãã
å 容
ä¾ãã°ä»¥ä¸ã®ã³ã¼ãã®ããã«å®è£ ãã
export default { props: { propsValue: Number }, methods: { editValue() { this.propsValue = 20 } }
editValue()
ãå®è¡ï¼ããããã£ã®propsValueã®å¤ã夿´
ï¼ãããã©ã¦ã¶ã®ã³ã³ã½ã¼ã«ãè¦ãã¨ä»¥ä¸ã®ãããªè¦åã¡ãã»ã¼ã¸ãåºåããã¦ãã¾ãã
[Vue warn]: Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders. Instead, use a data or computed property based on the prop's value. Prop being mutated: "propsValue"
è§£æ±ºæ¹æ³ã¯ä»¥ä¸ã®è¨äºã«è¨è¿°ããã¦ãã¾ããã*1
親âåã³ã³ãã¼ãã³ãã®ãã¼ã¿ãã¤ã³ãã£ã³ã°ã伿ãããããã«ãããããã£ã®å¤ã¯å¤æ´ããªããã¨ãæ¨å¥¨ããã¦ããããã§ããï¼ã¨ã©ã¼ã§ã¯ãªãè¦åã¬ãã«ï¼
ããããã£ã®å¤ã夿´ãããå ´åã¯ã対象ã®ããããã£ç¸å½ã®åç§°ã§ãã¼ã¿(data)ãå®ç¾©ãåæå¤ã¨ãã¦ããããã£ã®å¤ãã»ãããã®ã¡ã®å¦çã§ã¯ããã¼ã¿ã«å®ç¾©ããå¤ã夿´ããæ¹åã«ããã¨è¯ãããã§ãã
ã¤ã¾ããããªæãã®ã³ã¼ãã«ãªãã¾ãã
export default { props: { propsValue: Number }, data() { // ããããã£ã®å¤ãè¨å® dataValue: this.propsValue }, methods: { editValue() { // ãã¼ã¿ã«å®ç¾©ããå¤ã夿´ this.dataValue = 20 } }
ããã
以ä¸ã§ãã
ã³ã¼ã¹ã¯å®è·µçã§ããããããã§ããããã¡ãã¨ããç¥èãä¼å¾ããã«ã¯ãå ¬å¼ãªãã¡ã¬ã³ã¹ãä½µãã¦èªã¿é²ããæ¹ããã¿ã¼ããªã¨æãã¦ãã¾ãã
ããééãçããã¾ãããããææããã ããã¨å©ããã¾ãï¼
*1:å¾ã 調ã¹ã¦è¦ãã¨ãå ¬å¼ãªãã¡ã¬ã³ã¹ã®ãããã㣠- Vue.js - åæ¹åã®ãã¼ã¿ããã¼ã«ãè¨è¼ããã¦ãã¾ãããã¡ããã¨å ¬å¼ãªãã¡ã¬ã³ã¹ãã¿ã¾ããorz