M
M
文章目录
  1. vue中,如何自定义使用指令v-model?
  2. vue中,如何不使用data,直接使用vuex管理数据?
  3. 如何将Vue组件实例化,挂载到需要的DOM上?
  4. vuex中,Mutation 必须是同步函数,能不能使用异步?
  5. react hooks 使用?纯函数?
  6. react ssr, 前后端同构?
  7. Object.prototype.toString.call 和 toString() 有什么不一样?

面试中遇到的问题

vue中,如何自定义使用指令v-model?

自定义组件的-v-model

vue中,如何不使用data,直接使用vuex管理数据?

另一个方法是使用带有 setter 的双向绑定计算属性:

<input v-model="message">
// ...
computed: {
message: {
get () {
return this.$store.state.obj.message
},
set (value) {
this.$store.commit('updateMessage', value)
}
}
}

如何将Vue组件实例化,挂载到需要的DOM上?

const Constructor = Vue.extend(Hello)
const vm = new Constructor({
propsData: {
message: 'component'
}
}).$mount();

vuex中,Mutation 必须是同步函数,能不能使用异步?

不能,使用异步会导致,日志追踪不到。

现在想象,我们正在 debug 一个 app 并且观察 devtool 中的 mutation 日志。
每一条 mutation 被记录,devtools 都需要捕捉到前一状态和后一状态的快照。
然而,在上面的例子中 mutation 中的异步函数中的回调让这不可能完成:
因为当 mutation 触发的时候,回调函数还没有被调用,
devtools 不知道什么时候回调函数实际上被调用——
实质上任何在回调函数中进行的状态的改变都是不可追踪的。

react hooks 使用?纯函数?

react ssr, 前后端同构?

Object.prototype.toString.call 和 toString() 有什么不一样?

比如

var arr=[1,2,3];
arr.toString(); // 输出"1,2,3"
Object.prototype.toString.call(arr) // 输出"[Object Array]"

一个是返回结果,一个是返回类型,为什么会这样的?

回答:

必须是不一样的,首先你要明白 Object 是js中所有其他类型的父类,意思是所有的数据类型都继承了Object。
但是无论是string还是array都会重写这个tostring方法。从此处就可以说你用的两者就完全不同。而且Object.prototype.toString.你要理解这代码的意思。prototype从英文就说了是“回原型”的意思。就是说你这个Object.prototype.toString调用的是object的原型(也就是父类)的tostring方法。

支持一下
扫一扫,支持一下