Babel Plugin to transform method chaining to react-addons-update format.
On purpose support manipulating presist data with method chaining.
TODO
Replace deep clone. No need to change a lot codes.
Add in your package.json
"devDependencies": {
...
"babel-plugin-gr-assign": "git@github.com:poiyzy/grAssign.git"
},
npm install
支持将 $_grAssign = a.b.c.d = 2;
转换为:
$_grAssign = grUpdate(a, {
b: {
c: {
d: {
$set: 2
}
}
}
});
TODO
plugins: [
[grAssign, {
alias: '$_g',
method: 'update'
}]
]
- alias: 设置 variable 别名,默认为
$_grAssign
- method: 设置 update 方法别名,默认为
grUpdate
使用 a[{index}]
或 a[[index]]
来标记 数组 index.
var $_grAssign;
var a = { b: [{name: 1}, {name: 2}, {name: 3}] }
let index = a.b.findIndex(function(e) { return e.name === 2 });
$_grAssign = a.b[{index}].name.set('test');
会转化为:
$_grAssign = grUpdate(a, {
b: {
[index]: {
name: {
$set: 'test'
}
}
}
});
-
Assign
$_grAssign = a.b.c = 3;
转换为
$_grAssign = grUpdate(a, { b: { c: { $set: 3 } } });
-
$set
$_grAssign = a.b.c.set(3);
转换为
$_grAssign = grUpdate(a, { b: { c: { $set: 3 } } });
-
$push
$_grAssign = a.b.c.push(3);
转换为
$_grAssign = grUpdate(a, { b: { c: { $push: [3] } } });
-
$merge
$_grAssign = a.b.c.merge(3);
转换为
$_grAssign = grUpdate(a, { b: { c: { $merge: [3] } } });
-
$splice
$_grAssign = a.b.c.splice(1, 2, 3, 4);
转换为
$_grAssign = grUpdate(a, { b: { c: { $splice: [[1, 2, 3, 4]] } } });
-
$apply
$_grAssign = a.b.c.apply(function(e) { return e; });
转换为
$_grAssign = grUpdate(a, { b: { c: { $apply: function(e) { return e; } } } });
-
$unshift
$_grAssign = a.b.c.unshift(1);
转换为
$_grAssign = grUpdate(a, { b: { c: { $unshift: [1] } } });
npm run test
- Fork it!
- Create your feature branch:
git checkout -b my-new-feature
- Commit your changes:
git commit -am 'Add some feature'
- Push to the branch:
git push origin my-new-feature
- Submit a pull request :D
MIT