老师我这里有一个困惑。

老师我这里有一个困惑。

老师我这里有一个困惑,我们花了这么多精力来改写子文件。这样有么子用呢?感觉吃力不讨好。想也不能把子文件用在其他地方。子文件实现了点击效果但是是依据父文件的函数来的。所以这个子文件感觉多写了这么多代码,还不能和父文件分开使用两个文件连在一块。  模块就比较好,我制定了一个模块后到其他地方直接引用就可以了。多写一个子文件的意义在哪呢?

第二个问题:我每次写完都是写在一个文件中,然后再进行优化的。达不到跳跃的思维。就是按照视频中老师这样的讲解来改写的。所以能跟的上。请问在实际开发中是和老师这样讲解的步骤一步一步(先整体实现然后分解拆分)优化的来,还是跳跃的一次性搞定?

下面的代码我自己实现了您不用看。特别是在子文件中实现花了比较长的时间,所以引发了这个思考。到底哪些地方需要进一步用子文件?感觉自己都看不准哪些地方该用子文件哪些地方不该用。再说用了和不用有么子区别是更方便检查还是更方便引用? (要是更方便引用,感觉不太可能吧)

TodoList.js文件(父文件)

import React, {Component, Fragment } from "react";

import { Todoitem3 } from "./Todoitem3";

class TodoList3 extends Component{

    constructor(props){

        super(props);

        this.state={

            inputValue:'o',

            list:['a','b'],

        }

        this.handleChange=this.handleChange.bind(this)

        this.handleKeyUp=this.handleKeyUp.bind(this)

        this.handleClick=this.handleClick.bind(this)

    }

    handleChange(e){

       console.log(e.target.value)

       const inputValue=e.target.value

      this.setState({inputValue})

    };

    handleKeyUp(e){

        console.log(e.keyCode)

        if(e.keyCode===13&&this.state.inputValue!==''){

            const list=[...this.state.list,this.state.inputValue]

            this.setState({list,inputValue:''})

        }

    };

    handleClick(index){

        const list=[...this.state.list]

        list.splice(index,1)

        this.setState({list})

    }

    handleItem(){

        return  this.state.list.map((value,index)=>{

            return (

                // <li key={index}

                // onClick={this.handleClick.bind(this,index)}

                // >

                //     {value}

                // </li>

                <Todoitem3 

                    key={index}

                    index={index}

                    content={value}

                    handle={this.handleClick}

                />

             )

         })

    }

    render(){

        return(

            <Fragment>

                <input

               value{this.state.inputValue}

               onChange={this.handleChange}

               onKeyUp={this.handleKeyUp}

                 />

                <ul>                  

                    {this.handleItem()}  

                </ul>

            </Fragment>

        )

    }

}

export {TodoList3};

 部分功能子文件

 import React, {Component  } from "react";

 class Todoitem3 extends Component{  

    constructor(){

        super();

        this.handleClick=this.handleClick.bind(this)

    }

    handleClick(){

        const {handle,index}=this.props

        handle(index)

    }

     render(){

         return (

             <li 

             onClick={this.handleClick}

             >{this.props.content} </li>

         )

     }

 }

 export{Todoitem3};

​在这里输入代码,可通过选择【代码语言】突出显示

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

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕夭夭 2020-12-13 11:37:35

同学你好,问题解答如下 :

1.这里多拆分一个子组件确实看起来比较麻烦,但老师的目的不是讲拆分这个组件的意义是什么,而是通过它给大家讲解如何拆分组件,以及如何传值。因为例子比较小,所以尽量拆的细一点,去传授大家这种拆分的思想。在实际开发中,就不会拆分的这么细了。

2. 因为你才刚入门,没有实际的工作经验,所以能够写完再优化已经很不错了。老师也是因为要给大家讲解这种拆分的思想,所以先整体后拆分。在实际开发中,肯定会先思考如何拆分,然后再去做。当然了,即使有工作经验的,也不能做到一步到位。只能是在写的时候,尽量做的更好。但是做的过程中,我们还是会不断发现问题不断优化的。所以这是要靠工作经验的积累,才能慢慢做到更好的。不用担心哦,等以后工作几年,就能熟练了。

3.拆分组件一般是为了组件的复用(多次调用组件)和维护(代码多了放在一起不便于阅读和管理)。如果组件没有复用的可能,而且不拆分也便于维护,那么不拆分是可以的。在实际开发中,根据自己的编码习惯去做就行,拆分组件并没有硬性的要求。


祝学习愉快~

  • 提问者 Vigorous阿炎 #1

    嗯嗯,明白了。感谢老师的详细解答。是的和您想的一样拆分就是为了复用和便于维护,要是这两个都没达到那样拆分就没有任何意义了。第二也是您说的,每个人的习惯不同。

    react自己比较注重,现在是前期基础部分基本每个案例自己最少都写了三遍。而且老师讲解的非常详细,自己也比较有耐心看完。

    2020-12-13 11:46:27
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师