您好,欢迎来到12图资源库!分享精神,快乐你我!我们只是素材的搬运工!!
  • 首 页
  • 当前位置:首页 > 开发 > WEB开发 >
    比照React和Vue中创立运用的区别(3)
    时间:2020-11-02 21:03 来源:网络整理 作者:网络 浏览:收藏 挑错 推荐 打印

    我要做的就是援用位于父组件外部的函数,就是援用props.deleteItem。 如今您能够曾经留意到,在代码示例中,我们只是编写了deleteItem而不是props.deleteItem。 这是由于我们运用了一种称为解构的技术,该技术允许我们获取props对象的一部分并将其分配给变量。 因此,在我们的ToDoItem.js文件中,我们具有以下内容:

    const ToDoItem = (props) => { 

     

    const { item, deleteItem } = props; 

     

    这为我们创立了两个变量,一个称为item,它被分配与props.item相反的值,另一个是deleteItem,它从props.deleteItem分配了值。 我们本可以经过仅运用props.item和props.deleteItem来避免整个破坏性的事情,但是我以为值得一提!

    Vue:

    function onDeleteItem(id) { 

     

    list.value = list.value.filter(item => item.id !== id); 

     

    Vue是如何做的?

    Vue中需求一种略有不同的办法。 我们基本上必须在这里做三件事:

    首先,在元素上我们要调用函数:

    <button class="ToDoItem-Delete" @click="deleteItem(item.id)"> -</button> 

    然后,我们必须在子组件(在本例中为ToDoItem.vue)中创立一个emit函数作为办法,如下所示:

    function deleteItem(id) { emit("delete", id);} 

    同时,您会留意到,当我们在ToDo.vue中添加ToDoItem.vue时,我们实践上援用了一个函数:

    <ToDoItem v-for="item in list" :item="item" @delete="onDeleteItem" :key="item.id" /> 

    这就是所谓的自定义事情侦听器。 它会侦听在任何状况下运用字符串" delete"触发发射的状况。 假设听到此音讯,它将触发一个名为onDeleteItem的函数。 此函数位于ToDo.vue外部,而不是ToDoItem.vue中。 如前所述,此函数仅从list.value数组中过滤ID。

    在这里还值得留意的是,在Vue示例中,我可以复杂地将$ emit部分写在@click监听器中,如下所示:

    <button class="ToDoItem-Delete" @click="emit("delete", item.id)"> -</button> 

    这将使步数从3增加到2,而这完全取决于团体爱好。

    简而言之,React中的子组件可以经过props来拜访父函数(前提是您要传递props,这是相当标准的做法,在其他React示例中,您会遇到少量的任务),而在Vue中,您可以 从孩子收回事情,通常将其搜集在父组件中。

    我们如何传递事情监听器? React:

    复杂事情(例如单击事情)的事情侦听器很复杂。 这是我们如何为创立新的ToDo项目的按钮创立click事情的示例:

    <button className="ToDo-Add" onClick={createNewToDoItem}> +</button> 

    在这里超级复杂,简直就像我们将如何运用香草JS处置嵌入式onClick。 如Vue部分所述,每当按下Enter键时,设置事情侦听器停止处置就破费了更长的时间。 这本质上需求由输入标签处置onKeyPress事情,例如:

    <input type="text" placeholder="I need to..." value={toDo} onChange={handleInput} onKeyPress={handleKeyPress}/> 

    只需该函数辨认出已按下" enter"键,便会触发createNewToDoItem函数,例如:

    const handleKeyPress = (e) => { 

     

    if (e.key === "Enter") { 

     

    createNewToDoItem(); 

     

     

    }; 

    Vue:

    在Vue中,它十分复杂明了。 我们只运用@符号,然后运用我们想要做的事情监听器的类型。 因此,例如,要添加一个click事情监听器,我们可以编写以下代码:

    (责任编辑:admin)