Vue.js: 외부 JS의 값 변경 사항 반영(단순store 모드)
13220 단어 Vue.js
한마디로 단순 스토리지 모드입니다.
사용:
스토리지 데이터 표시
2020-02-01 수정:store 대상에state 대상이 있는 형식으로 변경합니다.
브라우저 크기 조정 및 스크롤을 테스트하는 예입니다.
WindowSize.대상을 js에 저장하여 내보냅니다.윈도우의resize와 scroll 이벤트에서store.state 속성의 값을 변경합니다.
(Vue의created 또는 mounted에서 진행
window.addEventListener
, 윈도우의 이벤트 처리가 중복될 수 있기 때문에 좋지 않습니다. 신중하기 위해서입니다.)WindowSize.js
const store = {
state: {
width: window.innerWidth,
height: window.innerHeight,
scrollX: window.pageXOffset,
scrollY: window.pageYOffset
}
};
window.addEventListener('resize', () => {
store.state.width = window.innerWidth;
store.state.height = window.innerHeight;
});
window.addEventListener('scroll', () => {
store.state.scrollX = window.pageXOffset;
store.state.scrollY = window.pageYOffset;
});
export default store;
.vue 파일에서 Windows Size.js 객체를 가져오고 데이터 속성 winSize를 지정합니다.브라우저의 크기와 스크롤에 따라 숫자의 표시가 달라집니다.Home.vue
<template>
<div>
<div>{{winSize.width}}x{{winSize.height}}</div>
<div>{{winSize.scrollX}},{{winSize.scrollY}}</div>
<div style="width: 2000px; height: 1000px; background-color: #eee">
</div>
</div>
</template>
<script>
import WindowSize from '../states/WindowSize';
export default {
data() {
return {
winSize: WindowSize.state
};
}
}
</script>
스토리지 데이터 변경 사항 닫기
값이 외부 대상의 속성에 부여되었을 때,watch를 사용하여 이벤트 처리와 같은 작업을 수행할 수 있습니다.다음 예는 페이지를 끝까지 스크롤하여
ref="message"
의div 요소를 볼 때 표시를 바꾸는 것입니다.watch에서
'winSize.scrollY'
처럼'대상. 속성'형식의 함수 이름을 사용할 수 있습니다.Home.vue
<template>
<div>
<div>{{winSize.width}}x{{winSize.height}}</div>
<div>{{winSize.scrollX}},{{winSize.scrollY}}</div>
<div style="width: 2000px; height: 1000px; background-color: #eee">
</div>
<div ref="message">{{message}}</div>
</div>
</template>
<script>
import WindowSize, { ElementAppeared } from '../states/WindowSize';
export default {
data() {
return {
winSize: WindowSize.state,
message: 'Waiting...'
};
},
watch: {
'winSize.scrollY'() {
if(ElementAppeared(this.$refs.message)) {
this.message = 'Hello!';
}
}
}
}
</script>
다음과 같이 컴퓨터를 통해 중계할 수도 있습니다.Home.vue
<script>
import WindowSize, { ElementAppeared } from '../states/WindowSize';
export default {
data() {
return {
winSize: WindowSize.state,
message: 'Waiting...'
};
},
computed: {
scrollY() {
return this.winSize.scrollY;
}
},
watch: {
scrollY() {
if(ElementAppeared(this.$refs.message)) {
this.message = 'Hello!';
}
}
}
}
</script>
여기서 사용하는 함수 ElementAppeared는 다음과 같습니다.WindowSize.js
export function ElementAppeared(elem) {
if(elem) {
let rect = elem.getBoundingClientRect();
return (rect.top < store.state.height);
}
return false;
}
Reference
이 문제에 관하여(Vue.js: 외부 JS의 값 변경 사항 반영(단순store 모드)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kazutosato/items/b5994786c5b1171a50b7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)