vue.jsの更新時のちらつきについて
Q&A
解決したいこと
Vue.jsの画面が切り替わるタイミング、または
更新時に動画ファイルとpdf表示のフレームが一瞬表示される
ちらつき現象を直したいです。
div class="preview"〜の部分で、
添付ファイルのプレビュー画面を表示しておりまして、
動画ファイルか、PDFかをv-ifで判断しているのですが、
ちらつく要因が分からず、解決方法分かりましたら、
ご教示いただけますと幸いです。
該当するソースコード
<div class="preview" v-if="news.file_data.mp4 != ''">
<video controls controlsList="nodownload" oncontextmenu="return false;" v-bind:src="news.file_data.mp4"></video>
</div>
<div class="preview" v-if="news.file_data.pdf != ''">
<iframe width="100%" height="100%" v-bind:src="news.file_data.pdf"></iframe>
</div>
</div>
</div>
<div class="delivery_date_box">
<p>ニュース配信予約日時</p>
<input v-bind:value="news.post_date | dateFormat" v-on:input="inputEvent" type="datetime-local" required />
</div>
</div>
<div class="news_edit_btns">
<router-link :to="{name: 'AdminNewsList'}">戻る</router-link>
<div class="news_edit_right_btns">
<button class="red_btn" v-on:click="delte_notice">削除</button>
<button class="green_btn" v-on:click="fileUpload">内容確認</button>
</div>
</div>
</form>
</div>
<script>
import moment from 'moment'
import axios from 'axios'
export default {
data () {
return {
fileInfo: '',
err_catch: false,
news_data: '',
news_files:'',
news_filename:'',
url_protcol: 'http://',
domain:
url_mount_path: '/rest/get_notice_detail/',
url_delete_path: '/rest/delete_notice/',
url_upload_path: '/rest/upload_file/',
height: "100px"
}
},
mounted () {
this.axios
.post(this.url_protcol + this.domain + this.url_mount_path + this.$route.query.id + '/',{},{
headers: {
"Content-Type": "application/json",
"Authorization": this.$store.state.userToken
}
})
.then(response => {
this.news_data = response.data
this.news.notice_title = this.news_data.title
this.news.notice_text = this.news_data.body
this.news.post_date = this.news_data.post_date
this.news.notice_id = this.news_data.notice_id
this.news_files = {"mp4":this.news_data.attach_file_mp4,"pdf":this.news_data.attach_file_pdf,"file_name":""}
this.news.file_data = this.news_files
}),
this.resize();
},
自分で試したこと
div class="preview"の欄にv-cloakを追記しましたが、マスタッシュ構文を使用していない為、効果はありませんでした。
以下の2文を削除すると、ちらつきは解消されたのですが、プレビュー機能もなくなってしまう。
<video controls controlsList="nodownload" oncontextmenu="return false;" v-bind:src="news.file_data.mp4">
</video>
<iframe width="100%" height="100%" v-bind:src="news.file_data.pdf"></iframe>