Giter VIP home page Giter VIP logo

babel-plugin-rn-merge-style's Introduction

babel-plugin-rn-merge-style

style字段值 为 非对象表达式时, 则会对style字段值加上一层 _mergeStyle 来进行样式合并 (非 对象表达式 零信任)

function _mergeStyle(styleArr) {
  return [].concat(styleArr).reduce((result, style) => {
    return Object.assign(result, style);
  }, {});
}

例:

// 对象表达式 - 1
<View style={{ width: 100 }} />
// =>
<View style={{ width: 100 }} />

// 对象表达式 - 2
<View style={{ ...containerStyle }} />
// =>
<View style={{ ...containerStyle }} />

// 数组表达式
<View style={[{ width: 100 }]} />
// =>
<View style={_mergeStyle([{ width: 100 }])} />

// 标识符
<View style={containerStyle} />
// =>
<View style={_mergeStyle(containerStyle)} />


// 函数调用
<View style={getStyle()} />
// =>
<View style={_mergeStyle(getStyle())} />

// 条件表达式
<View style={isActive ? activeStyle : normalStyle} />
// =>
<View style={_mergeStyle(isActive ? activeStyle : normalStyle)} />


// 逻辑表达式
<View style={activeStyle || normalStyle} />
// =>
<View style={_mergeStyle(activeStyle || normalStyle)} />


// 成员表达式
<View style={style.container} />
// =>
<View style={_mergeStyle(style.container)} />

配置

{
  "enableMultipleStyle": boolean
}

当为 true 时, 会启动 多style 模式, 会将 所以的 以 style 结尾的属性进行值的表达式判断,然后决定是否包裹 _mergeStyle

如:

// 成员表达式 - enableMultipleStyle:false
<View style={style.container} headerStyle={style.header} />
// =>
<View style={_mergeStyle(style.container)} headerStyle={style.header}  />

// 成员表达式 - enableMultipleStyle:true
<View style={style.container} headerStyle={style.header} />
// =>
<View style={_mergeStyle(style.container)} headerStyle={_mergeStyle(style.header)}  />

// 其他的以此类推 ...
# 安装依赖
yarn
# 构建
yarn build
# 执行测试
yarn test
# 自动修复 ESLint 错误
yarn eslint:fix
# 自动修复格式错误
yarn prettier:fix
# 发布新版本
npm version <major|minor|patch>
git push --follow-tags
npm publish

babel-plugin-rn-merge-style's People

Contributors

croatialu avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.