>  기사  >  웹 프론트엔드  >  실제 사례에서 Vue 구성 요소 사용

실제 사례에서 Vue 구성 요소 사용

php中世界最好的语言
php中世界最好的语言원래의
2018-06-08 11:20:491673검색

이번에는 실제 사례에서 Vue 컴포넌트를 사용하는 방법을 가져오겠습니다. 실제 사례에서 Vue 컴포넌트를 사용할 때 주의 사항은 무엇입니까?

z프로젝트 기술:

webpack + vue + element + axois(vue-resource) + less-loader+ ...

vue 작업 방법 사례:

1. 그렇지 않은 경우에도 배열 데이터를 사용합니다. 얻은 후 미리 로드된 애니메이션 만들기

<el-carousel :interval="3000" type="card" height="200px" class="common-mt-md">
   <el-carousel-item v-for="item in movieArr" :key="item.id" class="text-center">
    <img v-bind:src="item.images.small" alt="电影封面" class="ticket-index-movie-img">
   </el-carousel-item>// 实际显示的内容-跑马灯
   <p v-if="!movieArr.length" class="ticket-index-movie-loading">
    <span class="el-icon-loading "></span>
   </p>// 当 movirArr的数组为空的时候,做出的预加载 loading 
</el-carousel>

2. 버튼 상태 및 버튼 클릭 가능 여부 판단

<p v-if="!multipleSelection.length">
  <el-button type="success" round disabled>导出</el-button>
</p><!-- 不能点, 判断数组为空 -->
<p v-else>
  <el-button type="success" round >导出</el-button>
</p><!-- 可以点, 判断数组为不为空 -->

3. jquery와 마찬가지로 dom을 추가합니다(vue는 데이터 지향적이며 dom의 jquery 복잡한 작업을 제거해야 함)

<el-form-item label="时间" prop="name">
  <el-input v-model="ruleForm.name"></el-input>//绑定模型,检测输入的格式
  <span class="el-icon-plus ticket-manage-timeinput" @click="addTime(this)"></span>//绑定方法,增加dom的操作
 </el-form-item> 
<el-form-item label="时间" prop="name" v-for="item in timeArr" :key=&#39;item.id&#39;>  //timeArr数组与数据就渲染下面的dom,没有就不显示
  <el-input v-model="ruleForm.name"></el-input> 
  <span class="el-icon-minus ticket-manage-timeinput" @click="minusTime(this)"></span> 
</el-form-item>

js:

jq의 dom 문자열과 동일합니다.

 timeInputString: '<el-input v-model="ruleForm.name"></el-input><span class="el-icon-minus"></span>'

기본 js는 데이터를 배열로 푸시하고 팝합니다(배열의 길이를 파악합니다). vue는 데이터 기반이므로 데이터 판단은 dom이 있어야 하는지 여부를 결정합니다. render

 addTime () {
 this.timeArr.push('str')
 },
 minusTime () {
 this.timeArr.shift('str')
 }

4. 클래스 추가, 장면이 특정 목록을 반복할 때 특정 목록에 클래스가 있고 매개변수 전달을 지원할 수 있는 메서드를 바인딩합니다

dom

<li v-for="section in item.sections" :key=&#39;section.id&#39; @click="hideParMask" :class="getSectionId(section.id)">
 <router-link :to="{ name: &#39;learning&#39;, params: { sectionId: section.id}, query: { courseId: courseId}}" >
   <span>{{item.orderInCourse}}.{{section.sectionNumber}}</span>
   <span>{{section.name}}</span>
 </router-link>
</li>

js

getSectionId (sectionId) {
 return {
  active: this.$route.params.sectionId === sectionId,
 }
}

5 .child->parent 컴포넌트 통신, vue.$emit vue.on

child 컴포넌트:

getSectionId (sectionId) {
 return {
  active: this.$route.params.sectionId === sectionId,
 }
}

parent 컴포넌트:

dom

<v-child :courseId="courseId" v-on:receiveTitle="receiveTitle"></v-child>

js

methods: {
 receiveTitle (name) {
  this.titleName = name; // titleName 就是 **@课程
 }
}

요약 루틴: 자식 컴포넌트는 함수(이벤트)를 부모에게 사용합니다. 컴포넌트는 receiveTitle 속성을 전달합니다. 그런 다음 상위 구성 요소는 이 속성을 모니터링하고 receiveTitle 메소드를 매개변수로 전달합니다.

6. Parent->Parent 구성 요소:

dom :

<course-tab :courseList = courseList ></course-tab>

js:

courseList().then(res => {
 this.courseList = res.data.courses;
 }).catch( err => {
 console.log(err)
});

Child 구성 요소:

 props: {
  courseList: {
   type: Array
  }
 }

요약 루틴: 상위 구성 요소는 하위 구성 요소 라벨에 이 변수를 바인딩해야 하며, 그러면 하위 구성 요소가 이 변수를 받아들일 수 있습니다. in props

7 .오류 처리 라우팅, 리디렉션, 라우터에 라우팅 정보 추가

{
  path: '*',
  redirect: '/'
}

여기 홈페이지로 리디렉션이 있으며 프로그래밍 방식 탐색에서 별도의 404 페이지를 만들어 이 페이지로 리디렉션

할 수도 있습니다.

router.push({ path: 'login-regist' })  // 如果这样写的话,会寻找路由最近的 / 然后在后面直接拼接login-regist;
为了防止在多级嵌套路由里面出现bug ,应该写全路由的全部信息,包括 /
router.push({ path: '/login-regist' })

8 .dom에서 CSS 스플라이싱

<p class="img" :style="{background: &#39;url(&#39; + item.logoFileURL + &#39;)&#39;}"></p>

9. 스크롤 이벤트 모니터링

data () {
  return {
   scrolled: false,
    show: true
  }
},
methods: {
  handleScroll () {
   this.scrolled = window.scrollY > 0;
   if (this.scrolled) {
    this.show = false;
   }
  }
 },
 mounted () {
  window.addEventListener('scroll', this.handleScroll);
 }

10. 입력 상자의 입력 값 변경 모니터링

@input="search",

요소 UI

,

<el-input v-model="input" @keyup.enter.native="add" placeholder="请输入内容" ></el-input>
<el-input 믿습니다. 이 기사의 사례를 읽은 후 방법을 마스터했습니다. 더 흥미로운 내용을 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요!

추천 도서:

React의 렌더링 사례에 대한 자세한 설명


Vue Mixin 기능 사용 사례에 대한 자세한 설명

위 내용은 실제 사례에서 Vue 구성 요소 사용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:처음부터 Vuex다음 기사:처음부터 Vuex