如何做视图和视图逻辑分离的

640?wx_fmt=jpeg

作者 | 二哲

来源 | web前端开发(web_qdkf)


本文将分享一下过去一年里,我们项目是如何做视图与业务逻辑抽离的。

什么是视图?什么是逻辑?

正所谓视图就是身为一个用户可见到的图像,对于这个图像来说它正是广为流传的 view = f(data)。这个公式精确的表达了视图就像是一个函数一般,输入即输出,所见即所得,没有任何副作用。

 
 
<div>	
<input placeholder="修改名字" onChange={handleChange} />	
<p>姓名:{username}</p>	
<div>


以上这样一段DOM代码,它就是我们所见到的视图,它是纯粹的,给了什么就会渲染什么。当用户有了交互的事件,数据有了变化,就会渲染新的视图。


而视图逻辑就是我们前端工程师对视图的显示,对视图的 data 进行的处理。它可能是来自于服务端,可能是来自于本地,亦或者是来自于用户自有的操作行为。一切让数据改变,或者对数据进行操作的行为等等,这些都是我们的业务逻辑。


 
 
username = api.getUserName()	
handleChange(e) {	
    this.username = e.target.value;	
}

过去的组件

按照惯例,我们会习惯于把视图和业务逻辑都写在一起,当视图越来越庞大或者逻辑越来越复杂。就会让我们的代码越来越不易维护和测试。比如这样的代码

 
 
class Demo extends React.Component<Props> {	
  constructor(props: Props) {	
    super(props);	
    this.state = {	
      data: null,	
    }	
  }	
  async componentDidMount() {	
    const ret = http.get(`/api/xx/${this.props.id}`);	
    this.setState({	
      data: ret.data,	
    })	
  }	
  handleClick = () => {	
    // do something...	
  }	
  // other methods...	
  render() {	
    return (	
      <div>	
        <p onClick={this.handleClick}>click</p>	
        {this.state.data}	
      </div>	
    )	
  }	
}


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值