vue 구성 요소 값 전달 방식, 부모 자식, 부모, 형제 사이 및 Vuex 값 전달 코드 구현 포함
7477 단어 vuejavascriptes6
vue
어셈블리 간 값 전달 방법1.1 부모 어셈블리에서 서브어셈블리로 값 전달
parent.vue
에 서브어셈블리를 도입한 후 서브어셈블리의 라벨에 값 전달 방식:msg="msgToChild"
을 추가하고 서브어셈블리에서 정의msg
속성은 서브어셈블리에서 전달된 값을 수신합니다.//
Parent
// msgToChild , msg
import MChild from "./Child";
export default {
data() {
return {
msgToChild: "from parent msg to child o",
};
},
components: {
MChild
}
};
props
된 수신 서브어셈블리의 값은 다음과 같습니다. //
child
//
{{ msg }}
export default {
props: {
// msg ,
msg: {
type: String,
default: ""
}
}
};
부모 구성 요소는
this.$children[0].childmsg
또는 this.$refs.child.childmsg
을 통해 서브 구성 요소의 속성을 얻을 수 있으며, 전가 형식도 Function일 수 있다.1.2 서브어셈블리에서 모 피쳐로 값 전달
//
child
{{ msg }}
{{ childmsg }}
import bus from "../utils/bus";
export default {
methods: {
passMsg() {
// ,
this.$emit("showMsg", "i am msg from child");
}
}
};
Parent
{{ msg }}
import MChild from "./Child";
export default {
data() {
return {
msg: ""
};
},
components: {
MChild
},
methods: {
// msgfromchild
showMsg(msgfromchild) {
//
this.msg = msgfromchild;
}
}
};
1.3 비 모/자 어셈블리 전송 값
bus.js
, bus.js
중 하나 만들기Vue
실례import Vue from "vue";
export default new Vue();
App
에서 Child
까지 값을 전달해야 한다. 먼저 App
에 bus
를 도입하고 bus
에 트리거 이벤트// App
//모 어셈블리 가져오기import MParent from "./views/Parent";
//비 모/자 어셈블리 전송 값
import bus from "./utils/bus";
export default {
name: "App",
components: {
MParent
},
methods: {
passMsg() {
//bus에서 트리거 이벤트 정의
bus.$emit("msg", "I am from app");
}
}
};
child
에서 수신
child
{{ msg }}
{{ childmsg }}
import bus from "../utils/bus";
export default {
data() {
return {
childmsg: " this.$children "
};
},
mounted() {
//
bus.$on("msg", msgfromapp => {
this.childmsg = msgfromapp;
});
}
};
1.4(
PubSubJS
라이브러리) 메시지 구독 및 게시 방법 전달PubSubJS
npm install --save pubsub-js
<!-- 1. PubSub -->
import PubSub from 'pubsub-js'
export default {
data() {
return {
// ,
msgfromPubpublish: "msgfromPubpublish"
};
},
methods: {
//
pubsubmsg() {
// publishmsg , ,this.msgfromPubpublish
PubSub.publish("publishmsg", this.msgfromPubpublish);
}
}
};
{{ childmsg }}
import PubSub from "pubsub-js";
import Diff from "./Diff";
export default {
data() {
return {
childmsg: " msg"
};
},
mounted() {
// ,publishmsg ,msgfromPubpublish , , this
// , , bus
PubSub.subscribe("publishmsg", (msg, msgfromPubpublish) => {
console.log(msgfromPubpublish);
this.childmsg = msgfromPubpublish;
});
}
};
vuex
로 어셈블리에서 값 전달Vuex
는 Vue.js
응용 프로그램 개발을 위한 상태 관리 모델이다.중앙 집중식 스토리지 관리 애플리케이션의 모든 구성 요소의 상태를 적용하고 적절한 규칙으로 상태를 예측 가능한 방식으로 변경합니다.vuex
npm install vuex --save
count
를 만들고 초기state
, getters
대상과 일부mutation
, actions
: export default {
state: {
count: 0
},
getters: {
doubleCount(state) {
return state.count * 2;
}
},
mutations: {
// method, commit
add(state) {
state.count++;
},
decrese(state) {
state.count--;
}
},
actions: {
delayadd(context) {
setTimeout(() => {
// context commit mutations
context.commit("decrese");
console.log("decrese double");
}, 1000);
}
}
};
store
, 직접 획득count
및 모듈식 명명import Vue from "vue";
import Vuex from "vuex";
import count from "@/store/count";
Vue.use(Vuex);
export default new Vuex.Store({
modules: {
count
}
});
main.js
에 vuex
를 도입하여 store
부터 Vue
까지 마운트import store from '@/store/store'
new Vue({
el: "#app",
router,
store,
components: { App },
template: ""
});
import { mapState, mapGetters } from "vuex";
export default {
computed: {
...mapState({
// count: "count"
//
count: state => state.count.count
}),
...mapGetters(["doubleCount"])
// doubelCount() {
// return this.$store.getters.doubleCount;
// }
},
// computed: mapState({
// count: "count"
// }),
data() {
return {
msgToChild: "from parent msg to child o",
msg: "",
msgfromPubpublish: "msgfromPubpublish"
};
},
methods: {
showMsg(msgfromchild) {
this.msg = msgfromchild;
},
// ...mutations
add() {
// commit mutations
this.$store.commit("add");
// dispatch actions
// this.$store.dispatch("delayadd");
}
}
};
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Fastapi websocket 및 vue 3(Composition API)1부: FastAPI virtualenv 만들기(선택 사항) FastAPI 및 필요한 모든 것을 다음과 같이 설치하십시오. 생성main.py 파일 및 실행 - 브라우저에서 이 링크 열기http://127.0.0.1:...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.