请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于setup函数封装之后调用

const listRelativeEffect = () => {
    const { reactive } = Vue;
    const list = reactive([]);
    const addItemToList = (item) => {
      list.push(item);
    }
    return { list, addItemToList }
  }

  // 关于 inputValue 操作的内容进行了封装
  const inputRelativeEffect = () => {
    const { ref } = Vue;
    const inputValue = ref('');
    const handleInputValueChange = (e) => {
      inputValue.value = e.target.value
    }
    return { inputValue, handleInputValueChange}
  }

  const app = Vue.createApp({
    setup() {
      // 流程调度中转
      const { list, addItemToList } = listRelativeEffect();
      const { inputValue, handleInputValueChange} = inputRelativeEffect();
      return {
        list, addItemToList,
        inputValue, handleInputValueChange
      }
    },
    template: `
      <div>
        <div>
          <input :value="inputValue" @input="handleInputValueChange" />
          <button @click="() => addItemToList(inputValue)">提交</button>
        </div>
        <ul>
          <li v-for="(item, index) in list" :key="index">{{item}}</li>
        </ul>
      </div>
    `,
  });

老师,请问<button @click="() => addItemToList(inputValue)">为什么要用剪头函数来调用addItemToList呢?既然setup函数return了addItemToList,那么为什么不能直接调用,一定要在外面包装一层函数再调用呢?

正在回答 回答被采纳积分+3

1回答

提问者 墨语迟 2021-02-24 16:53:56

我意思是,为什么不能直接<button @click="addItemToList(inputValue)">调用,一定要用另外一个函数调用,才能实现addItemToList的传参呢?

0 回复 有任何疑惑可以回复我~
  • Dell #1
    不行,必须要箭头函数,你这么写,实际上绑定的是函数执行的结果,而不是一个函数
    回复 有任何疑惑可以回复我~ 2021-02-25 00:00:52
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信