js 常见可优化代码

in 网站建设
关注公众号【好便宜】( ID:haopianyi222 ),领红包啦~
阿里云,国内最大的云服务商,注册就送数千元优惠券:https://t.cn/AiQe5A0g
腾讯云,良心云,价格优惠: https://t.cn/AieHwwKl
搬瓦工,CN2 GIA 优质线路,搭梯子、海外建站推荐: https://t.cn/AieHwfX9
/**
 * @场景1
 */
import {Button} from "antd";

const obj = {
  name: 'haha',
  age: 22
}

// 是否成年
let isAdult;

if(obj.age > 18) {
  isAdult = true;
}else {
  isAdult = false ;
}

// 下边是不是更好
isAdult = obj.age > 18;


/**
 * @场景2 挺基本的
 * @note 下边的场景是数组,对象也是一样,数组就key是numbe的string的object
 */

// 根据类型执行 不同的操作
const type = 0;

function fn0() {
  console.log(0)
}

function fn1() {
  console.log(0)
}

function fn2() {
  console.log(0)
}


switch (type){
  case 0:
    fn0();
    break;
  case 1:
    fn1();
    break;
  case 2:
    fn2();
    break;
}


// 下边是不是更好
const fns = [
  function () {
    console.log(0)
  },
  function () {
    console.log(1)
  },
];

fns[type]()







/**
 * @场景3
 * @description 我要对后端返回的字段,是钱的, 格式化,千分符
 */

const res = {
  model: [
    {

    }
  ]
}

res.model.forEach(record => {
  for(let key in record){
    if(key === '总利润' || key === '总成本' || key === '总损耗' || key === '销售费用' ...) {
      record[key] = parse(record[key])
    }
  }
})


// 为什么不把这些数据维护在一个数组呢

// config/money.js

 const fields =  [
  '总成本',
    '总利润',
    '总损耗'
  ]

export default function isMoney(field) {
  return fields.includes(field)
}


// module.js


import isMoney from "@config/money"

res.model.forEach(record => {
  for(let key in record){
    if(isMoney(key)) {
      record[key] = parse(record[key])
    }
  }
})


/**
 * @场景4
 */

// 比如一个chart有3种主题 light normal dark

class Demo extends React.Component {
  constructor(){
    this.state = {
      chart: null ,
      theme: 'dark'
    }
  }
  normal(){
    this.setState({
      theme: 'normal'
    }, () => {
      this.state.chart.draw()
    })

  }
  dark(){
    this.setState({
      theme: 'dark'
    }, () => {
      this.state.chart.draw()
    })
  }
  light(){
    this.setState({
      theme: 'light'
    }, () => {
      this.state.chart.draw()
    })
  }
  render(){
    return (
      <div>
        <button onClick={this.light}>light</button>
        <button onClick={this.normal}>normal</button>
        <button onClick={this.dark}>dark </button>
      </div>
    )
  }
}



// 3 种主题应该放到一个配置文件吧, chart或者map不应该重新画吧,有切换主题或者改变数据的方法,


// config/theme.js

export default [
  'light',
  'normal',
  'dark',
]


import $themes from "@config/theme"

class Demos extends React.Component {
  changeTheme(theme){
    this.setState({
      theme
    }, () => {
      this.state.chart.changeTheme(theme)
    })
  }
  render(){
    return (
      <div>
        {
          $themes.map(theme => {
            return (
              <Button onClick={this.changeTheme.bind(this, theme)}>{theme}</Button>
            )
          })
        }
      </div>
    )
  }

}
关注公众号【好便宜】( ID:haopianyi222 ),领红包啦~
阿里云,国内最大的云服务商,注册就送数千元优惠券:https://t.cn/AiQe5A0g
腾讯云,良心云,价格优惠: https://t.cn/AieHwwKl
搬瓦工,CN2 GIA 优质线路,搭梯子、海外建站推荐: https://t.cn/AieHwfX9
扫一扫关注公众号添加购物返利助手,领红包
Comments are closed.

推荐使用阿里云服务器

超多优惠券

服务器最低一折,一年不到100!

朕已阅去看看