vue-兄弟组件通讯(原始方法)

85 阅读1分钟

假设Header和List是兄弟组件。一般情况下,兄弟组件是不能通讯的:缺少中间的黄线

fa3026d0d0bd7e0a94e980fab5ac81e.png

原始解决方式:

  1. 父组件用函数建立起与子组件的关系
  2. 子组件用props接收父组件传递过来的函数(props可以接收函数)
  3. 在子组件里面使用父组件的函数(调用的是App.vue的函数)
  4. 将数据当参数传递给父组件
  5. List组件又可以用props接受到App.vue传递过来的东西
fb3bd84a0c2390e19186751690098c9.png
//App.vue
<MyHeader :addTodo="addTodo"></MyHeader>
<List :todos="todos"></List>

methods: {
    addTodo(C) {
    //操作data中的数据
    this.todos.unshift(C);
    },
},

此段代码实现了父传子,子传父

//header
//接收父组件传递的addTodo
props: ["addTodo"],
methods: {
    add(e) {
      const todoObj = { id: Date.now(), title: e.target.value, done: false };
      console.log(todoObj);
      //此处调用的函数是App.vue里的函数
      this.addTodo(todoObj); //将todoObj对象传递给App.vue里的函数addTodo
    },
},