{"_id":"@icedesign/data-binder","_rev":"42-42293fae90f63e8818bd80ca082903e9","name":"@icedesign/data-binder","description":"ICE 前后端数据绑定、交互方案","dist-tags":{"latest":"1.0.5","beta":"1.0.5-0","next":"1.0.0"},"versions":{"0.1.0":{"name":"@icedesign/data-binder","version":"0.1.0","description":"ICE 前后端数据绑定、交互方案","main":"lib/index.js","files":["lib/","demo/","theme/"],"scripts":{"lint":"eslint . --ext '.js,.jsx' --fix","prepublish":"npm run lint"},"author":{"name":"ICE Team","email":"ice-admin@alibaba-inc.com"},"repository":{"type":"git","url":"git+https://github.com/alibaba/ice.git"},"license":"ISC","keywords":["ice-component"],"dependencies":{"axios":"^0.17.1","deepmerge":"^2.0.1","pure-render-decorator":"^1.2.1","@icedesign/base":"^0.1.0"},"devDependencies":{"@icedesign/skin":"^0.1.2","babel-eslint":"^8.0.3","body-parser":"^1.15.2","cors":"^2.8.1","eslint-plugin-react":"^7.5.1","express":"^4.14.0","eslint":"^4.13.1","eslint-plugin-babel":"^4.1.1","eslint-plugin-import":"^2.8.0","eslint-config-airbnb":"^16.1.0","eslint-plugin-jsx-a11y":"^6.0.3"},"typings":"lib/index.d.ts","bugs":{"url":"https://github.com/alibaba/ice/issues"},"homepage":"https://github.com/alibaba/ice#readme","_id":"@icedesign/data-binder@0.1.0","_npmVersion":"5.6.0","_nodeVersion":"8.9.1","_npmUser":{"name":"zeroling","email":"wssgcg1213@qq.com"},"dist":{"integrity":"sha512-BQC9BzG+damoLPvuWLzLLaWjnsKanZGj6NwildmcJRe1f6gYVgc5/37i2D8rEPhL20l3xwXThnJUsAL4KFQ/Iw==","shasum":"d77e374a26d299e7947fff309d99f906f6506299","tarball":"https://registry.npmjs.org/@icedesign/data-binder/-/data-binder-0.1.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGgqShgwyY4D/8/c4CqfTJ1Uq9e24+lNXfjeKc0Ldr6qAiEA0Q+r+ri28USnGsxNpCpanlLFrMYAnycpkV6I/+6m2IM="}]},"maintainers":[{"name":"zeroling","email":"wssgcg1213@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/data-binder-0.1.0.tgz_1514270949652_0.5470664959866554"},"directories":{}},"0.1.1":{"name":"@icedesign/data-binder","version":"0.1.1","description":"ICE 前后端数据绑定、交互方案","main":"lib/index.js","files":["lib/","demo/","theme/"],"scripts":{"lint":"eslint . --ext '.js,.jsx' --fix","prepublish":"npm run lint"},"author":{"name":"ICE Team","email":"ice-admin@alibaba-inc.com"},"repository":{"type":"git","url":"git+https://github.com/alibaba/ice.git"},"license":"ISC","keywords":["ice-component"],"dependencies":{"axios":"^0.17.1","deepmerge":"^2.0.1","pure-render-decorator":"^1.2.1","@icedesign/base":"^0.1.0"},"devDependencies":{"@icedesign/skin":"^0.1.2","babel-eslint":"^8.0.3","body-parser":"^1.15.2","cors":"^2.8.1","eslint-plugin-react":"^7.5.1","express":"^4.14.0","eslint":"^4.13.1","eslint-plugin-babel":"^4.1.1","eslint-plugin-import":"^2.8.0","eslint-config-airbnb":"^16.1.0","eslint-plugin-jsx-a11y":"^6.0.3"},"typings":"lib/index.d.ts","bugs":{"url":"https://github.com/alibaba/ice/issues"},"homepage":"https://github.com/alibaba/ice#readme","_id":"@icedesign/data-binder@0.1.1","_npmVersion":"5.6.0","_nodeVersion":"8.9.1","_npmUser":{"name":"zeroling","email":"wssgcg1213@qq.com"},"dist":{"integrity":"sha512-y/fXlxh+q8z2OpbGg+OfJ8wSwtpfmwBX9snLKim5pe85EYCiaAdmO87WojBAwiFZYBsO8+TBZq9M4f9QXQUv6w==","shasum":"3580a9a634b2038f781478c49e57be7f894f5de4","tarball":"https://registry.npmjs.org/@icedesign/data-binder/-/data-binder-0.1.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCQ0GL9xC4raldkyrenDSNJ16FCvGuL/3e71TPAqfjQNgIhAMGIQ8/OJUMbEVmPtcLAbzM/wxh6oJjxRVwZDfoqNHIn"}]},"maintainers":[{"name":"chenbin93","email":"chenbinad@gmail.com"},{"name":"noyobo","email":"noyobo@gmail.com"},{"name":"zeroling","email":"wssgcg1213@qq.com"},{"name":"yujiangshui","email":"yujiangshui@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/data-binder-0.1.1.tgz_1514288612531_0.14025189587846398"},"directories":{}},"0.1.2":{"name":"@icedesign/data-binder","version":"0.1.2","description":"ICE 前后端数据绑定、交互方案","main":"lib/index.js","files":["lib/","demo/","theme/"],"scripts":{"lint":"eslint . --ext '.js,.jsx' --fix","prepublish":"npm run lint"},"author":{"name":"ICE Team","email":"ice-admin@alibaba-inc.com"},"repository":{"type":"git","url":"git+https://github.com/alibaba/ice.git"},"license":"ISC","keywords":["ice-component"],"dependencies":{"axios":"^0.17.1","deepmerge":"^2.0.1","pure-render-decorator":"^1.2.1","@icedesign/base":"^0.1.0"},"devDependencies":{"@icedesign/skin":"^0.1.2","babel-eslint":"^8.0.3","body-parser":"^1.15.2","cors":"^2.8.1","eslint-plugin-react":"^7.5.1","express":"^4.14.0","eslint":"^4.13.1","eslint-plugin-babel":"^4.1.1","eslint-plugin-import":"^2.8.0","eslint-config-airbnb":"^16.1.0","eslint-plugin-jsx-a11y":"^6.0.3"},"typings":"lib/index.d.ts","fusionConfig":{"docs":"demo/","variable":"lib/scss/variable.scss","entry":"lib/index.scss","deps":[]},"bugs":{"url":"https://github.com/alibaba/ice/issues"},"homepage":"https://github.com/alibaba/ice#readme","_id":"@icedesign/data-binder@0.1.2","_npmVersion":"6.0.1","_nodeVersion":"8.9.1","_npmUser":{"name":"zeroling","email":"wssgcg1213@qq.com"},"dist":{"integrity":"sha512-9G6TkFArDKMgVcDES5cE9j+73kPIIae/2FKydYjzx3/qwN4O6TfBY4qPuA9jXdCXdBREj5m0T8kPFjrDQsZw9g==","shasum":"cbb653703bf752992988841e93ced5af34596208","tarball":"https://registry.npmjs.org/@icedesign/data-binder/-/data-binder-0.1.2.tgz","fileCount":15,"unpackedSize":38447,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbBiVHCRA9TVsSAnZWagAAsl0P+weuwPFmvw2p3jZpWQvA\nK1z2a+q6SvBNl83kf0TTSfouW68T7lSxvmJV8H+mYk0/eDhdBVn/vhG9wz2V\neK/0E7wWOexjrjrczNw0Dh7sYK+x8Y9cvJrCA0hgfeCp9NbVOax6n6y5I+Cm\nrXGPULts5GNaCKBRegx1NIB0TQychGIM5lBI+jmofGdG/v4AKYyTIo2wS48Y\n9nlkHQLPebLajbTH8mf8ylEeQ6AV4AlciTYnYlSpMXFLC2Fgl8lE6C+Bfq78\nFnWO4jaD/+l4UZHq1K53IGgWpSX+I+UwXIHPrnlCwsecjA1zuw0y5yOyaRJr\nCzM5w362sIOOFlekJueEFgJljcM1+w+yRCogLSI8E4g+ofZF3pty7kPi61XT\nU/q1c7NszQQ6FR36OEaTmCOUfCVu4vxRZ4nwKQoZ4sNs0nBkTxe+hOw/2181\nf5WUsYNgkS/HRHA/f5uTtK/99WFPQ97FjAjL97pH7g4LUBFEjr/nk3vVV2vg\nmDe/XLlLP1/g4strC5LaiV44JUigbm2AKy36ClfKMdEE+UHNzzZBLFFKokO8\nImGwhL4Zx0GTdkfy3nIoNpzHq62qprvXHOS9WNN31Jw4n+Md+C8NRQik8drV\n2wv0bKWp6vvMKNiTbdJTzQAutSHd4k5kUBxCudf7ixq+MvuFAtqnAW3VGK3m\nV4yN\r\n=V7Vp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBmupNp6IdJQB1HtsmOwi7lXivSWqeqDpOE5VAj3bFLbAiAmRu2z3RgiGUTJgeVpid8sgD1OtlZY4UiwSdwYeEW+YQ=="}]},"maintainers":[{"name":"chenbin93","email":"chenbinad@gmail.com"},{"name":"noyobo","email":"noyobo@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"yujiangshui","email":"yujiangshui@gmail.com"},{"name":"zeroling","email":"wssgcg1213@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/data-binder_0.1.2_1527129414139_0.7690852029289419"},"_hasShrinkwrap":false},"0.1.3":{"name":"@icedesign/data-binder","version":"0.1.3","description":"ICE 前后端数据绑定、交互方案","main":"lib/index.js","files":["lib/","demo/","theme/"],"scripts":{"lint":"eslint . --ext '.js,.jsx' --fix","prepublish":"npm run lint"},"author":{"name":"ICE Team","email":"ice-admin@alibaba-inc.com"},"repository":{"type":"git","url":"git+https://github.com/alibaba/ice.git"},"license":"ISC","keywords":["ice-component"],"dependencies":{"@icedesign/base":"^0.1.4","axios":"^0.17.1","deepmerge":"^2.0.1","pure-render-decorator":"^1.2.1"},"devDependencies":{"@icedesign/skin":"^0.1.2","babel-eslint":"^8.0.3","body-parser":"^1.15.2","cors":"^2.8.1","eslint-plugin-react":"^7.5.1","express":"^4.14.0","eslint":"^4.13.1","eslint-plugin-babel":"^4.1.1","eslint-plugin-import":"^2.8.0","eslint-config-airbnb":"^16.1.0","eslint-plugin-jsx-a11y":"^6.0.3"},"typings":"lib/index.d.ts","fusionConfig":{"docs":"demo/","variable":"lib/scss/variable.scss","entry":"lib/index.scss","deps":[]},"bugs":{"url":"https://github.com/alibaba/ice/issues"},"homepage":"https://github.com/alibaba/ice#readme","_id":"@icedesign/data-binder@0.1.3","_npmVersion":"6.1.0","_nodeVersion":"8.10.0","_npmUser":{"name":"noyobo","email":"noyobo@gmail.com"},"dist":{"integrity":"sha512-rHoBjZqgZ17qGIfIg1hXlopkOaI1o7rNPswbVmbYSsn0vw1wZy8XUN8amaMTHtT7y/GBtL2eD3+A9tsz/SyRvA==","shasum":"9fef01a35392af09093cb0689254a1a183705669","tarball":"https://registry.npmjs.org/@icedesign/data-binder/-/data-binder-0.1.3.tgz","fileCount":9,"unpackedSize":25957,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbC7GGCRA9TVsSAnZWagAADXcP/0M1JAJNqLIdIU4APlGO\ndFneaZOAnbjzJ6NeGgqynF3trTrY6gmQUcPgIs63dTI4COS/wBmFsBtv/l5n\nuMzlYR0nKQSv4tUoc0H/nVI6n9PygeOy7AEf7mRw2PjsZQbb6tEk94tQ5Mh4\n4j5xfWx9aUTiVuz+2oSaXyaT8Ad0gp24KxkJs414tZFn9UUKbxX0KugJuXXy\n9rWG5a/sKgJZjc0gpZBIZ1rVGeiwlQK+DfRUEG3WgZxLtzLJSipooPRGKKi/\nm/YAnYIM+NnYgjloBVQJtQvQ/p9rtQ3Bw9jr02HMnX3MwcBViibbcQNtEarO\n7IBEWe+rWrEIdfepJ+UWLd5kcrD9ZRLoCTMjB7NtJYBWbewCULy4IQUTkjpt\ngh9M5BfxnTLiQPCSj1I8z1Drm1eWnzwNxWP+WFezRtaQdBy+BkTrOvDjtAO8\nNwI6xolb4RrRgpxuOIZyjPWSTd7zQsrp/Qfk2g5LcYr+1iWl9hXh1A9JfqCK\n2Y/u7h4saIIGAXnxxAL5aRVaYZp1Ogm28HUADZUrwAxMdygj7Ogdc7e0NEiV\nvQY+CHrqm5kR5iOYgZqHsJR+/CJjip9fcCtqzd/8aawsXoQs7rCIyFa8EerI\n6GqQU+tLS62eV3QpYuEqoJWBu2NCqJlG+Pi0AfgWvwrAWjUMTiZMPlODkzOe\nI77g\r\n=ZK8n\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDMFb1ELDNvZHUXx/f6QuH4fS5D7ySZ9j7TlA3G71ovGwIgOyU5GK8+TcVxfZeccBtCr06VMrKf9yGJjQ8Jowmhpls="}]},"maintainers":[{"name":"chenbin93","email":"chenbinad@gmail.com"},{"name":"noyobo","email":"noyobo@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"yujiangshui","email":"yujiangshui@gmail.com"},{"name":"zeroling","email":"wssgcg1213@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/data-binder_0.1.3_1527492997546_0.928319665132286"},"_hasShrinkwrap":false},"0.1.4":{"name":"@icedesign/data-binder","version":"0.1.4","description":"ICE 前后端数据绑定、交互方案","main":"lib/index.js","files":["lib/","demo/","theme/"],"scripts":{"lint":"eslint . --ext '.js,.jsx' --fix","prepublish":"npm run lint"},"author":{"name":"ICE Team","email":"ice-admin@alibaba-inc.com"},"repository":{"type":"git","url":"git+https://github.com/alibaba/ice.git"},"license":"ISC","keywords":["ice-component"],"dependencies":{"@icedesign/base":"^0.1.4","axios":"^0.17.1","deepmerge":"^2.0.1","pure-render-decorator":"^1.2.1"},"devDependencies":{"@icedesign/skin":"^0.1.2","babel-eslint":"^8.0.3","body-parser":"^1.15.2","cors":"^2.8.1","eslint":"^4.13.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-babel":"^4.1.1","eslint-plugin-import":"^2.8.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-react":"^7.5.1","express":"^4.14.0"},"typings":"lib/index.d.ts","fusionConfig":{"docs":"demo/","variable":"lib/scss/variable.scss","entry":"lib/index.scss","deps":[]},"bugs":{"url":"https://github.com/alibaba/ice/issues"},"homepage":"https://github.com/alibaba/ice#readme","_id":"@icedesign/data-binder@0.1.4","_npmVersion":"6.1.0","_nodeVersion":"8.10.0","_npmUser":{"name":"noyobo","email":"noyobo@gmail.com"},"dist":{"integrity":"sha512-gz74ozxc4khVxgp4Upif5v5rTVrFtgsSxLrQNOrBtaK83RuoxokR4cHe6Q3K1H/spOtWT4sGdr7X62T4nbov9A==","shasum":"59bca92ea30946cdeca8402609f8fdf631d2b088","tarball":"https://registry.npmjs.org/@icedesign/data-binder/-/data-binder-0.1.4.tgz","fileCount":16,"unpackedSize":40001,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbC8SECRA9TVsSAnZWagAAxFIP/3PGgnwsiwPaSs2FuCXq\nrO94URp1Uf9dihmsRxGFsy7KyCLGpGcuRAHNf+BWqiDBg92tNYQsYHfeqlSW\nSSCtFqEoJeuxK/U9ONbP6uUhcCBUFbXmW3d21RuOkTY5XAiVp1OtjCr33M2S\n9mGFTiD29jw82gJ+1A6AAuPUWTvAf/F1ojaOtNLjpo+IQvh+1STqkKtlNM+f\nOkRWiYn/06uZ0EMxO33ThkF7mhEGTZaak8LlvMm8Nl9Ah/IUQHI06wi8MP75\noQqHmWY+HKAQWgvfGCn8ZTPLeC9Gyo6ncLvvlcy+K0eXm+X3f4b6ZY32W2JO\nPmsP0CTLkTyovuXTJczSTMrWdCywlArgobbiafa1mIS9PYS0ZOz4voIMA+U2\nmkU1j1rT82o6l5GEI8Npur7nbUzoJwoIT/AxjdCplw+CdGJ8Ry8U5t8h/D2a\n4vzpq+AypMDZJ38IrGyDpQMj/6cU3kxFLRtxQHESDtPJazC7uIHB0NMuYPwp\nKijHm5hQeBvJ5Pf/tieUQZp9Cxgpf81CqB0OdnP61xqCDA7MtEEDx/EQz4G6\nwHFItKGdgvndTw5NkbZEhZQZ5eP58/XJ+CCQwWEbL4Pzz0HteB/0WOjc3YLF\njDLZ36mLtshKnSr+C9AJBpJU7pW7zeVL3z5aE/1LFJFxWXjqHio/pdNz36Tu\n4+Ry\r\n=pS3U\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC/BiGSDAlKXWVWZLxhoIi8tz7VoYoi+J5lagvtEbwVVwIhAIs6NaYopPJzs3rWpqIKRGoEuQfcQwb69veu4LCkmGUC"}]},"maintainers":[{"name":"chenbin93","email":"chenbinad@gmail.com"},{"name":"noyobo","email":"noyobo@gmail.com"},{"name":"yuanyan","email":"yuanyan.cao@gmail.com"},{"name":"yujiangshui","email":"yujiangshui@gmail.com"},{"name":"zeroling","email":"wssgcg1213@qq.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/data-binder_0.1.4_1527497859511_0.18436030431826111"},"_hasShrinkwrap":false},"0.1.5":{"name":"@icedesign/data-binder","version":"0.1.5","description":"ICE 前后端数据绑定、交互方案","main":"lib/index.js","files":["lib/","demo/"],"scripts":{"start":"ice-devtools start"},"author":{"name":"ICE Team","email":"ice-admin@alibaba-inc.com"},"repository":{"type":"git","url":"https://github.com/alibaba/ice/tree/master/react-materials/components/data-binder"},"license":"MIT","keywords":["ice","ice-component"],"dependencies":{"@icedesign/base":"^0.2.0","axios":"^0.18.0","deepmerge":"^2.0.1","pure-render-decorator":"^1.2.1"},"devDependencies":{"body-parser":"^1.15.2","cors":"^2.8.1","express":"^4.14.0","ice-devtools":"^1.0.4","jsonp":"^0.2.1"},"_id":"@icedesign/data-binder@0.1.5","_npmVersion":"5.6.0","_nodeVersion":"8.11.3","_npmUser":{"name":"zeroling","email":"wssgcg1213@qq.com"},"dist":{"integrity":"sha512-ePjBHwJFs+yMPc3S0LoaoQvU2ZUh13JekMhe1l7z476tBqzZrNZ3dJkrZTZw8JE4ON7nAiNp/J1+1jtY1KdIDQ==","shasum":"d727f634f61e17eaf17c039a54f3a08412f794ce","tarball":"https://registry.npmjs.org/@icedesign/data-binder/-/data-binder-0.1.5.tgz","fileCount":15,"unpackedSize":41651,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbWIHdCRA9TVsSAnZWagAA+5UP/Rgyl5Yyk/+5emHA9UBO\nachp5tBlNCgK+mdE4hro3RRPOldUQxTiUjaGl9OL+FYQDWRDISCjoQ19a6Hr\nkF5DPMvVT8nRJpGtjZbffS4UKf+EMJwuP9OiC1GyuSuOV+WkpcGVdc9yt2FD\nkxuFXzcDV93/grjP5/3NypuIwqdtpyIufAfy9jwdeP9zcX87C2/EcpWBRga0\nOYZTaHe9qnvtiClkjP1TTnKIQ7yU8tH2AFLBTIrKUcf8sMu0db6PoVuKibJ0\nvWH67pAQtDsFKQK8/sE9+r6CAcL48N+i6nPzxGE7PeOtiP9gcWPFOlTf28Xt\n2BSS3/pszfug8wIbBlq9HlePibxZO+acETBVVd5naqFq1Ok88RWF3nN+Mi0+\nRZKKbG094hWYeXU3LHmj2NTuxPg6zvKqBTzPtsJaDVIJXfkfZVGouJ94ozNW\nV5EJzmzerotXgv4714mGhvI95vLRd+xvJI2PqF4ltGGPFjO+6fm0BtrOmwTZ\n/9Q2lW4dibxCzZVgAPE0KoISQ8dOezW/4Mf4zQurYK57jdKv32HI/tu3cMy0\nmz98Nuq8Bg0EsJP34tn8ZcY5FpfTYy2Ltfp1b8En2nD6sIhOzt8qbe2ucpz8\nBsIHtRuHgnFtNf5Q97fZRFauSNYJq+vF4ZUoC/30aE2BghAocYxNmZn7Zg6X\nHN5r\r\n=6a34\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCe1yiEkDBgfXDj+ejMm93ifgMwY2Klk3Q1D86O4jgrfgIgT3VCbT7lj/nvroKDsw3EXNAFuZpna1+yd1d0BRQNkR4="}]},"maintainers":[{"email":"chenbinad@gmail.com","name":"chenbin93"},{"email":"chenjun1011@gmail.com","name":"chenjun1011"},{"email":"noyobo@gmail.com","name":"noyobo"},{"email":"yuanyan.cao@gmail.com","name":"yuanyan"},{"email":"hi@harryyu.me","name":"yujiangshui"},{"email":"wssgcg1213@qq.com","name":"zeroling"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/data-binder_0.1.5_1532527069892_0.538636998689288"},"_hasShrinkwrap":false},"0.1.6-0":{"name":"@icedesign/data-binder","version":"0.1.6-0","description":"ICE 前后端数据绑定、交互方案","main":"lib/index.js","files":["lib/","demo/"],"scripts":{"start":"ice-devtools start","build":"ice-devtools build","prepublish":"npm run build"},"author":{"name":"ICE Team","email":"ice-admin@alibaba-inc.com"},"repository":{"type":"git","url":"https://github.com/alibaba/ice/tree/master/react-materials/components/data-binder"},"license":"MIT","keywords":["ice","ice-component"],"dependencies":{"@icedesign/base":"^0.2.0","axios":"^0.18.0","deepmerge":"^2.0.1","pure-render-decorator":"^1.2.1"},"devDependencies":{"body-parser":"^1.15.2","cors":"^2.8.1","express":"^4.14.0","ice-devtools":"^1.0.4","jsonp":"^0.2.1"},"_id":"@icedesign/data-binder@0.1.6-0","_npmVersion":"5.6.0","_nodeVersion":"8.11.3","_npmUser":{"name":"zeroling","email":"wssgcg1213@qq.com"},"dist":{"integrity":"sha512-rfEaOet144qckvvBMZ0L1EuzRPjq+C0OzZgC8AFRkaBXSxUk/VnRAZ0tKpGCzFpMkX0Ku4wOeHdWY9rAFfaYNw==","shasum":"8c7a8dd2e3bf670245d1e4d9f4ce3b1cd1046427","tarball":"https://registry.npmjs.org/@icedesign/data-binder/-/data-binder-0.1.6-0.tgz","fileCount":15,"unpackedSize":42074,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbX/OVCRA9TVsSAnZWagAAungQAJZCf9jD5qO36Gg1UYru\nu8HgsxQL+unnZX4PdAcEsP5/TGtHt9gPiYH25P7u0T6ndkBzXpDLmktj+rfp\nK4SrLmm+FB4Mgfb85LQrS0ym3+4Eu1bRTFv7UYrxW18RR70M9k0Wdt7lqqyY\nxooA+W59kiDYbgSSPetvD29yLhh/C1XGjGQSG6zc9v6jUibg2j5cXszagD3g\n5oHoKlbJ+StQXrJOjM/Sw80oMiZOOVB0PRHL28EwqW7983yPSDUHivleS1P9\noWxRfuoxOFniQZgY7uDWjXxGK2uX9SF0AfaYvT1LKVLq/q5Kzv3J4hqS5v8K\nxuYa9b9E5pOw1PVaXEjGNdw9GSU76aj3fCLKGKfi/uvZ4qIdRykJX1sw88YV\nHSc+82ks09CDwydawdC9q01GMryGNEczliELinGFtMtsCthGvXmLkizuBjJW\n1DrLzbsnNFH13AN30ByAh4dxWjD/uCg5D2V1KgCzE7+Sbhz1g9D+J5Q2q0g/\nNY48H5nkj1MaN3KyiyDyYIvIwG21tsm4Wvpxc/JW6Db/cgWxUdVPGMJpgvtk\nLRR2A5Y7gWXNX2eBgqRPPYGfOfybGlysYzd4NrgyT+cL/qT6/Re/BWIG0qkD\nDMXlq8Fx0lvyt++aoclLlcfV18RorNr70XIVgvXeeL+kRaU0Xw+28dDw3pxb\nj34L\r\n=jefY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDM6jO+X9y8JLlvXk37m87PzsToPHz+BIlQ+TPm2pAPswIgVdByq2/chdetjS8o8WRrPY8LhzEh8Cgh7WYtBmnLZOA="}]},"maintainers":[{"email":"chenbinad@gmail.com","name":"chenbin93"},{"email":"chenjun1011@gmail.com","name":"chenjun1011"},{"email":"noyobo@gmail.com","name":"noyobo"},{"email":"yuanyan.cao@gmail.com","name":"yuanyan"},{"email":"hi@harryyu.me","name":"yujiangshui"},{"email":"wssgcg1213@qq.com","name":"zeroling"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/data-binder_0.1.6-0_1533014933189_0.048535226558165556"},"_hasShrinkwrap":false},"0.1.6":{"name":"@icedesign/data-binder","version":"0.1.6","description":"ICE 前后端数据绑定、交互方案","main":"lib/index.js","files":["lib/","demo/"],"scripts":{"start":"ice-devtools start","build":"ice-devtools build","prepublish":"npm run build"},"author":{"name":"ICE Team","email":"ice-admin@alibaba-inc.com"},"repository":{"type":"git","url":"https://github.com/alibaba/ice/tree/master/react-materials/components/data-binder"},"license":"MIT","keywords":["ice","ice-component"],"dependencies":{"@icedesign/base":"^0.2.0","axios":"^0.18.0","deepmerge":"^2.0.1","pure-render-decorator":"^1.2.1"},"devDependencies":{"body-parser":"^1.15.2","cors":"^2.8.1","express":"^4.14.0","ice-devtools":"^1.0.4","jsonp":"^0.2.1"},"_id":"@icedesign/data-binder@0.1.6","_npmVersion":"5.6.0","_nodeVersion":"8.11.3","_npmUser":{"name":"zeroling","email":"wssgcg1213@qq.com"},"dist":{"integrity":"sha512-+HGRvmWH8UNQtBOxAtp5T03VaNV8sXpVhrWYw6ETyu6xssJVuBH9aHbda6ZbbagDlou5tFKgOYxl5jlMu4vdTQ==","shasum":"e5cb10e6726c084e461839734cdf0f6ec8886e7b","tarball":"https://registry.npmjs.org/@icedesign/data-binder/-/data-binder-0.1.6.tgz","fileCount":15,"unpackedSize":42072,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbYpWaCRA9TVsSAnZWagAAcKMP/RoTUmdn0aQMp4s6/56A\nGcfg8/9N6lBU1sjK3BpyyCQNkWXB0y2wDyNDK8jCdo/KyF5s11CKUmcusMbU\nt/DX5wnqDf+O94CAi+jT0MFMazTWLWulYaVxya01qa/5mum/ainhy3k6YSXV\n7yPoPgmwICkSaPzvrJ8zpg5NiCTxtPKzRscNsP8l1tClv1RMVUKMaD9dhXYd\nJ7obnthpl81JA103hYSa0noEjkvXGoaazjKsbMtrx2fKLgNHEetleniKE8pq\nK8uJ8/jyPDHGCwHbcTky8O3T6cPuhQKDaDaTAdSt2DIDq93DPAfHOuxVCUCs\nm4k4LmZk3RA135mFRWEJ/j8+h3ugWzEoiBuvXq94bC/rd85yomYzUAOU9UxY\n4Hipkc/UeF9UYQoanRUlmI/76CZDxB7N9LMtISd0HRPAfDAbOuahZQKxK/l5\nTA17mj6ifNysW3C6iQXOr0SeE4kojEKxv3Fjv5ddulPPFJujIhX2jzXlghBe\nI8j78PDbfZaNu7hpsrklL1UICn4TBmAjp4fxI9DBygTOqLXPmr7k0x2HJ0TA\neQHZR93DN/OtvxQL8w5zCH+0M99LOb6GZTMUZe5RI1Fy2Q0RxkYJMYqB0DNm\nWEnAOLOjZqI30Jt7KqdiYLshKeTSGIjyKN/XtejRZsm808TDzSb8eY466Bv1\nkh2t\r\n=gKQN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDfm/iIv0PufsBbfV1OJtWz5tRP/0kRBD1a1bvxwJoV9gIgO2GlbaDZCADyJJpTxm+MMXMnGqcYTw/5SpsVFWeF010="}]},"maintainers":[{"email":"chenbinad@gmail.com","name":"chenbin93"},{"email":"chenjun1011@gmail.com","name":"chenjun1011"},{"email":"noyobo@gmail.com","name":"noyobo"},{"email":"yuanyan.cao@gmail.com","name":"yuanyan"},{"email":"hi@harryyu.me","name":"yujiangshui"},{"email":"wssgcg1213@qq.com","name":"zeroling"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/data-binder_0.1.6_1533187482478_0.1426964961901267"},"_hasShrinkwrap":false},"0.1.7":{"name":"@icedesign/data-binder","version":"0.1.7","description":"ICE 前后端数据绑定、交互方案","main":"lib/index.js","scripts":{"start":"ice-devtools start","build":"ice-devtools build","prepublish":"npm run build"},"author":{"name":"ICE Team","email":"ice-admin@alibaba-inc.com"},"repository":{"type":"git","url":"https://github.com/alibaba/ice/tree/master/react-materials/components/data-binder"},"license":"MIT","keywords":["ice","ice-component"],"dependencies":{"@icedesign/base":"^0.2.0","axios":"^0.18.0","deepmerge":"^2.0.1","pure-render-decorator":"^1.2.1"},"devDependencies":{"body-parser":"^1.15.2","cors":"^2.8.1","express":"^4.14.0","ice-devtools":"^1.0.4","jsonp":"^0.2.1"},"_id":"@icedesign/data-binder@0.1.7","_npmVersion":"6.4.0","_nodeVersion":"8.10.0","_npmUser":{"name":"noyobo","email":"noyobo@gmail.com"},"dist":{"integrity":"sha512-3M4v0HGEHMlBbk1soOZKTm4LDt5Gyicg9GwEjIni0agRFgIFKvA50dG7OwujJOavvqgDPQCYb5S9ioB/coLsuw==","shasum":"6b2847e547f8e0c12137f7f11966eb80d2595dcf","tarball":"https://registry.npmjs.org/@icedesign/data-binder/-/data-binder-0.1.7.tgz","fileCount":15,"unpackedSize":42146,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbmNDBCRA9TVsSAnZWagAAAhgQAIoKhyMJLKiAYrc/LF04\nw3CX3tQu2frJH62BF2xrgzgyA8jECvmIDz/Xv84vsmUBYS9PG4nODh10col/\nYR+lEcze9kTkRBQT8sIIBEWj5veGDa4U7UEm2lg9I2dtM0ukWhLZYBrZ9jfO\n6h+F3JF4zfXeVUcMt+g9nj631HoZKIG2c+s+jJ1hfWDSV9gaQdny96CkPZ/K\ntFj++mae2r0DbvwpAZVAo3i2fIC32rzBTxEI81r1qnoNAsQLchmDx6WPW+ji\n2nRJeLRUb/JV/fcjQa8SxMCjGIx53G28syR0dyQitya7HXoLiof3ouqV3oLK\nXaC0R0A7TLli5vyD8wc6Tg8AViO9TXOpBtskYNGtaopqQPCMNPN/HquqaF8r\nbQCFbJrUvkxWVXAletwml69KJ54fT/1/25Z2NAgde+CEzgUKdAnJbcV1l90R\n/qO89/DGeJ6Ya8cr5rPVY9Q0y5Pk/uA1uuylXu95I6+dkOTJsbNXQZ2UxVIY\nbPvRseVpWuEBDv50PpL1BNTiky53rGf0RBIHPrW+3+RnE6OuPKNJA5W9eA97\ncUEMEGHvEx1mO/ZdxSGDuf4kSgRkyhkREow0yNciHlM6PzOSgu+st0vhKoHO\ny7He0bF9JzuzKOls/05nR9RZdf8Qo6MHB3M0Xh1wl76h5d21LY7zbudfbsrB\nFO2G\r\n=HrS/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAxO1xqe9EGNbWczieHAMP7gpZwgQIb6Iphkb29GNCfsAiEAuAtO1WzVdkHg3/sIOrAplFDDUR23F488a7NHowAGtww="}]},"maintainers":[{"email":"chenbinad@gmail.com","name":"chenbin93"},{"email":"chenjun1011@gmail.com","name":"chenjun1011"},{"email":"noyobo@gmail.com","name":"noyobo"},{"email":"yuanyan.cao@gmail.com","name":"yuanyan"},{"email":"hi@harryyu.me","name":"yujiangshui"},{"email":"wssgcg1213@qq.com","name":"zeroling"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/data-binder_0.1.7_1536741569414_0.6702417496425392"},"_hasShrinkwrap":false},"0.1.8":{"name":"@icedesign/data-binder","version":"0.1.8","description":"ICE 前后端数据绑定、交互方案","main":"lib/index.js","scripts":{"start":"ice-devtools start","build":"ice-devtools build","prepublish":"npm run build"},"author":{"name":"ICE Team","email":"ice-admin@alibaba-inc.com"},"repository":{"type":"git","url":"https://github.com/alibaba/ice/tree/master/react-materials/components/data-binder"},"license":"MIT","keywords":["ice","ice-component"],"dependencies":{"@icedesign/base":"^0.2.0","axios":"^0.18.0","deepmerge":"^2.0.1","pure-render-decorator":"^1.2.1"},"devDependencies":{"body-parser":"^1.15.2","cors":"^2.8.1","express":"^4.14.0","ice-devtools":"^1.1.12","jsonp":"^0.2.1"},"_id":"@icedesign/data-binder@0.1.8","_npmVersion":"6.4.0","_nodeVersion":"8.10.0","_npmUser":{"name":"noyobo","email":"noyobo@gmail.com"},"dist":{"integrity":"sha512-TxjAUPquLbo0A7eNcv+fPoDf8jUizdzSM/sYEp4oHelPXNJ81muWmXFAZlSIm3GhDSgZ7jwr3EC0qG3Dkd+BIQ==","shasum":"62e56de70f7a8a18ce52393310d60d10285ece64","tarball":"https://registry.npmjs.org/@icedesign/data-binder/-/data-binder-0.1.8.tgz","fileCount":15,"unpackedSize":42147,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbnx5TCRA9TVsSAnZWagAAu7MP/2QSuOB5+CbJPkdB95aT\nfXgMuNXBXt235l/XCN135OOzyiGK5uj2il37S450uQ+BAHGl6cw6IGT4DGQe\nX1fsyHv8ut1OrRGl3+26E2qzQw+P3kcqcja7vmirtaKQToPSXJNO/zbV/kY+\nnTv3d+Xcymtb5pSUeYqxx6LnfY1C92ep5QcNQREQ9OX/1a29lZRZ23/p1C6Z\neMc3uOGEjhxsCX2879Ei/4SztyueFUPAmdYHk9jrC9j20UlcBNMREGFSnfLF\nK3kUGzVod8FJiAraa3VQV19AaAli7Vv5GCDyv0EHhKuuTv8S/ltJd5lbVAIE\nbUCCJNERgvEODbU2i7VXFQeO2lSeQeh4U3WbGv9qtNudjLTgUO0U5yEsFJM+\nh8I0SqA6yo2TXgjYGJrF1u4glioV1L8PqLJM3qa1TPwueMvE3moHBWWF5JLR\ncTXR2id5Dj4oeFpAPwEDeVWEPzCPLktmu1Oa/CQiLMwJW1A9MnJlTnB5Vn/1\nGzAM0HL7+pxMd/cvwWE8J6Hg/Mr7Fl44sEz6rRYhIMQBiG/NSIsrCF+vLNBl\nb4Hw8jckcNxjeeoX8GD6Rbm07x1zx9rQCkpbdp5lwV+8gi0MVF2eyniaNffA\n2nKRQRw0TBp121GzU9XqGVsHTFbj2kPd/4WyL57uKQM4SRomIMOYy1dsNU8F\n+6dE\r\n=SYZf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID0OT29UHeQ51nuuk9w6QCLr9fGNPLPwdP0AUcj4SIYYAiEA234AHAnAnSjlk1tYfzHfyYRAea6mHhP7ui0z6ITS8Gw="}]},"maintainers":[{"email":"chenbinad@gmail.com","name":"chenbin93"},{"email":"chenjun1011@gmail.com","name":"chenjun1011"},{"email":"noyobo@gmail.com","name":"noyobo"},{"email":"yuanyan.cao@gmail.com","name":"yuanyan"},{"email":"hi@harryyu.me","name":"yujiangshui"},{"email":"wssgcg1213@qq.com","name":"zeroling"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/data-binder_0.1.8_1537154643418_0.3835913189315845"},"_hasShrinkwrap":false},"0.1.9":{"name":"@icedesign/data-binder","version":"0.1.9","description":"ICE 前后端数据绑定、交互方案","main":"lib/index.js","scripts":{"start":"ice-devtools start","build":"ice-devtools build","prepublish":"npm run build"},"author":{"name":"ICE Team","email":"ice-admin@alibaba-inc.com"},"repository":{"type":"git","url":"https://github.com/alibaba/ice/tree/master/react-materials/components/data-binder"},"license":"MIT","keywords":["ice","ice-component"],"peerDependencies":{"react":"^16.5.0"},"dependencies":{"@icedesign/base":"^0.2.0","axios":"^0.18.0","deepmerge":"^2.0.1","pure-render-decorator":"^1.2.1"},"devDependencies":{"body-parser":"^1.15.2","cors":"^2.8.1","express":"^4.14.0","ice-devtools":"^1.1.12","jsonp":"^0.2.1"},"_id":"@icedesign/data-binder@0.1.9","_npmVersion":"6.2.0","_nodeVersion":"8.9.4","_npmUser":{"name":"chenbin93","email":"chenbinad@gmail.com"},"dist":{"integrity":"sha512-rXds8Am0PDE1iIGwWMuKZPHH4SN9C/B3nyrSnG9DAqtPupZOE9OAUZSW+CwPys7W+ejeQeqibQwhl91dQAtB2A==","shasum":"72092640ce284dd6ad1ed008d4c50f6eace4b119","tarball":"https://registry.npmjs.org/@icedesign/data-binder/-/data-binder-0.1.9.tgz","fileCount":15,"unpackedSize":42205,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb9TJiCRA9TVsSAnZWagAAvwYP+QGQjxIh7EoHQ1m0ywZN\nfNy/iTZoVR++IuU9AxsOSUbLqVsTjcp4YHEW0ah3Hg0vFUuXhhdHy5o9TTdI\nvUol0d/BnJR0ZDp6bAWUBmeBcCMOA6xy3ElSariLhgQS4kjugqlExQD2CuNj\nhGX7luYrEUJqWUK0L1eAzPoT+4WkTLaK9rNOC6CI0FV6EAWRCdgSfkCBAEdH\nCMYM85RbSlCfoWs0SIUqJXtkOeAX+7+ghN//TyshhxBXGZK2FQon9TcVjnzA\neS5zWTaXL07Aji11KWp6KRh4QOnE0PLBLd8+yRnqa7DTg4iHfvPNlXaKOu6Y\nxYuAKaEwsZUjdIXYztil61Y3NxOiQZ2ijonw148hc+4A+H5unbesQvNdYJeF\nC9G4OiyBegngwWhquibElWO91YCn4mtF5vg8X2LM7blQYcBIdgZfHecDtl+I\nq7Ag+oZlzsiliwiltNlGyL8QGrEf6ypujzbiIDZ+ehVU8UAqs9/7gQxygaQ+\nHpel27md58M932Dpk6vKyXc0UI45lO5lwHW2rOoqHcYDWTyfvyx4PxSkbsWj\nKCaiIMjZ9kw8b1MMgFWzOY5bTecsxYNvxBTwOa0G8WRwJd9N9oVIyYQmEXoX\nnB4kJ2SKa2iBYqd1Rilc/bc0zVSAu8z2Yw8zJiQKQssrQGqIy02AjBOQOgvW\nzHS/\r\n=YnwI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC/GFNTvlfbgd3oY33pgefJr8D6UUtyXmH5XMQgfcktmAiEAheXEpV/gLgAImdSliVb0ISv4SCFEF45nyi2yJ99uEjE="}]},"maintainers":[{"email":"chenbinad@gmail.com","name":"chenbin93"},{"email":"chenjun1011@gmail.com","name":"chenjun1011"},{"email":"yudong.myd@alibaba-inc.com","name":"empireo"},{"email":"noyobo@gmail.com","name":"noyobo"},{"email":"sobear.me@gmail.com","name":"sobear"},{"email":"tao360907796@gmail.com","name":"tao1991123"},{"email":"temper357@gmail.com","name":"temper357"},{"email":"yuanyan.cao@gmail.com","name":"yuanyan"},{"email":"hi@harryyu.me","name":"yujiangshui"},{"email":"wssgcg1213@qq.com","name":"zeroling"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/data-binder_0.1.9_1542795873474_0.39711966455350023"},"_hasShrinkwrap":false},"0.1.11":{"name":"@icedesign/data-binder","version":"0.1.11","description":"ICE 前后端数据绑定、交互方案","main":"lib/index.js","scripts":{"start":"ice-devtools start","build":"ice-devtools build","prepublishOnly":"npm run build","postinstall":"node ./postinstall.js"},"author":{"name":"ICE Team","email":"ice-admin@alibaba-inc.com"},"repository":{"type":"git","url":"https://github.com/alibaba/ice/tree/master/react-materials/components/data-binder"},"license":"MIT","keywords":["ice","ice-component"],"peerDependencies":{"react":"^16.5.0"},"dependencies":{"@icedesign/base":"^0.2.0","axios":"^0.18.0","deepmerge":"^2.0.1","pure-render-decorator":"^1.2.1"},"devDependencies":{"body-parser":"^1.15.2","cors":"^2.8.1","express":"^4.14.0","ice-devtools":"^1.1.12","jsonp":"^0.2.1"},"_id":"@icedesign/data-binder@0.1.11","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"sobear","email":"sobear.me@gmail.com"},"dist":{"integrity":"sha512-manm5sw+5z5oIHOkSotS0y9M3d7IN5Vdp4FHUPnWAs3uMr/MQzkZYTjodSTQWf0ukJGQz0yzBbnEVdFbJC/h1Q==","shasum":"b568ff0320cd2fc82437a29966fcd045c61f3299","tarball":"https://registry.npmjs.org/@icedesign/data-binder/-/data-binder-0.1.11.tgz","fileCount":16,"unpackedSize":43047,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcM0s+CRA9TVsSAnZWagAAY9wQAI9+kNrBoPszoqynj3rY\nAjYzcO/M9ZvuVJls+1Nap75c4jybiQ/0k9YTjkvqeJ0NRxpXxmTzD4/8iKIC\nPgwYJQP39VPTSix50hehVF+8IYpkZjVgYdnZhuh0xG7HzXlJqYt3eJnR/4XB\nYPRLvFuU84oIpznOCm9uY7//RmmTD+IzRvjyGklf/Sj+Gn5WPeaTpvqjloza\nFibhjO+oXG1eDV/0Cxyc9Fcraoim9uyxXqSyb5Dn2hlQQKMj7epLd8dK/wWx\nItUsjWW+q0BWikbGe6dYqhYQKE2v4yOlRqLFmZ3u1+LVMseZVbkKk/C+ApYd\ndgpL9p1YFjJzmTDfu7ZCasb9RqxpuJTUN1HmM4ohjMBFhS8pkpihGBaqokVw\nStOsfJFhiXBKuA+BhQmdcNbnBQDTjYw0xZzdhjsyy0UZ59Y59TFsWnbS+B4o\nG0x9qBa3JeOTqrtWRTGH5W1X/kACDhuSxzt3X4iCjkmoYjThTn1tMMybsx35\nnIoY9KYg/ixQtNgXvuZyZKlrVFnizdHxkH3+LmBushmKM8Dnnitsd68e4pt6\ni+ZRtqA3A1zNOyG+HSvHqELqRi4Y2eg3MwH1Rgmg+bdbZFezWhIAWsnclEGr\nwe0vNoQJruRTxPC2dC81c1bZex1OyUTsLKJJy6WSYY0Lm+ERTdiFfz86M6dB\ntbmI\r\n=py+T\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDuEGf6A1b3/OQ+sY1/Tbm3xHsmZQDXpFcecv29q6/pBAIgIugA+/pJJPtW8HsaWOQNyXC9p9bzF5PfmXs/w/Ia+KY="}]},"maintainers":[{"email":"chenbinad@gmail.com","name":"chenbin93"},{"email":"chenjun1011@gmail.com","name":"chenjun1011"},{"email":"yudong.myd@alibaba-inc.com","name":"empireo"},{"email":"noyobo@gmail.com","name":"noyobo"},{"email":"sobear.me@gmail.com","name":"sobear"},{"email":"tao360907796@gmail.com","name":"tao1991123"},{"email":"temper357@gmail.com","name":"temper357"},{"email":"yuanyan.cao@gmail.com","name":"yuanyan"},{"email":"hi@harryyu.me","name":"yujiangshui"},{"email":"wssgcg1213@qq.com","name":"zeroling"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/data-binder_0.1.11_1546865470183_0.28917901151886016"},"_hasShrinkwrap":false},"1.0.0":{"name":"@icedesign/data-binder","version":"1.0.0","description":"ICE 前后端数据绑定、交互方案","main":"lib/index.js","scripts":{"start":"ice-devtools start","build":"ice-devtools build","prepublishOnly":"npm run build","postinstall":"node ./postinstall.js"},"repository":{"type":"git","url":"https://github.com/alibaba/ice/tree/master/react-materials/components/data-binder"},"license":"MIT","keywords":["ice","ice-component"],"peerDependencies":{"react":"^16.5.0"},"dependencies":{"@alifd/next":"^1.11.7","axios":"^0.18.0","deepmerge":"^2.0.1","pure-render-decorator":"^1.2.1"},"devDependencies":{"body-parser":"^1.15.2","cors":"^2.8.1","express":"^4.14.0","jsonp":"^0.2.1"},"readme":"---\ntitle: DataBinder\ncategory: Components\nchinese: 数据交互方案\n---\n\nICE 前后端数据绑定、交互方案。\n\n## 介绍和使用方法\n\n### 目标\n\n灵感来源于 Webx，基于一定的**约定**帮你在组件上绑定一些数据和用来更新数据的 API，让你专注于 render 方法中界面显示逻辑，从而屏蔽掉 AJAX、state 管理等开发成本。\n\n如果你希望你的接口更自由，或者你希望自行把数据维护在组件 state 内，则都不推荐使用本方案。\n\n### 15 分钟快速上手教程\n\n15 分钟视频演示快速对比 Data-Binder 与 AJAX 方案对比，详细文档在下面。\n\n[点击这里查看视频](https://cloud.video.taobao.com/play/u/654982961/p/1/e/6/t/1/50636752.mp4)\n\n### 使用方法\n\n**1. 在某个 Class 上面配置当前需要的 DataSource**\n\nDataBinder 采用 decorator（类似 Java 注解）的方式使用，即在 class 上面调用并配置相关信息即可生效。\n\n**DataSource** 是 ICE DataBinder 解决方案中最重要的概念，组件、页面中某一块依赖数据的功能会被作为一个 DataSource 模块，用一个模块 Key 来区分，每一个数据模块可以配置多种数据获取方式以及默认数据等，然后注入到组件中被使用（详细的说明在下面）。比如我们最常见的通过 AJAX 获取、操作数据：\n\n```jsx\n@DataBinder({\n  '模块名 key': {\n    url: 'xxxx.json',\n    method: 'post',\n    // 请求附带的 request 参数，method post 下是 data 参数\n    data: {\n      page: 1\n    },\n    // AJAX 部分的参数完全继承自 axios ，参数请详见：https://github.com/axios/axios\n    // 下面是请求会返回的默认数据\n    defaultBindingData: {\n      // ...字段需要与 xxxx.json 接口返回的字段一一对应\n    }\n  }\n})\nclass ListView extends Component {\n  ...\n}\n```\n\n例如：\n\n```jsx\n@DataBinder({\n  account: {\n    url: '/getAccountInfo.json',\n    type: 'post',\n    data: {\n      uid: '123123'\n    },\n    defaultBindingData: {\n      // 配置接口返回数据的字段的初次默认值\n      userName: '',\n      userAge: 0\n    }\n  }\n})\nclass ListView extends Component {\n  ...\n}\n```\n\n详细的解释下：\n\n* 模块名 key **必填** 用来将数据和接口约束在某一个范围下，通常按照接口数据划分或者按照功能区块。\n* `url, type, data, etc.` **选填** 配置当前模块接口相关信息，基于 [axios](https://github.com/axios/axios) 支持其文档所有参数。该参数可选，部分模块可能无需 AJAX 交互，或者无法写死配置需要通过其他接口来获取。\n* `defaultBindingData` **选填** 该字段配置当前模块数据初始化默认值，如果当前模块有异步接口配置，则模块的字段需要与接口返回的数据字段一一对应。该参数可选，因为有些接口只需要提交成功即可，无需 UI 变化。\n\n**2. 通过 `this.props.bindingData.模块key` 来获取绑定的数据**\n\n对某个 React class 添加 DataBinder 绑定配置之后，DataBinder 会在组件上添加一个 props `bindingData` 用来存放配置的所有数据，模块 key 为你对应的 DataSource key 的前部分，比如：配置 `account` 可以通过 `this.props.bindingData.account` 获取到被绑定的数据，第一次为 `defaultBindingData` 里面配置的数据。\n\n因此你可以在你 render 部分的代码编写如下代码调用：\n\n```jsx\n@DataBinder({...})\nclass ListView extends Component {\n\n  render() {\n    const { account } = this.props.bindingData;\n\n    return (\n      <div>\n        <p>用户名：{account.userName}</p>\n        <p>年龄：{account.userAge}</p>\n      </div>\n    );\n  }\n}\n```\n\n**3. 通过 `this.props.updateBindingData` 来更新模块数据**\n\nDataBinder 除了为组件添加一个 props 之外，还向组件内部注入一个 API 用来更新模块数据：\n\n`this.props.updateBindingData(key, params, callback);` 第一个参数是模块 key ，字符串类型，用来标记更新哪一个 DataSource，需要保留全名（例如：`account`）。第二个参数是 DataSource 的配置，对象类型，调用时它会和默认定义的数据进行一个 merge 操作，并发起 AJAX 请求。通常你只需要传递 `{data: {...}}` 数据即可，`data` 用来描述对接口发请求时附加的参数。第三个参数是 `callback`，是一个函数，当请求结束之后调用，方便你处理额外逻辑。\n\n> 注意：updateBindingData 里面传递的参数，跟顶部配置的初始化参数是一个 deepmerge 的合并操作。\n\n比如一个翻页组件，当页码变化时获取新数据可以这样做：\n\n```jsx\n@DataBinder({\n  accountTable: {\n    url: '/getAccountTableList.json',\n    type: 'post',\n    data: {\n      page: 1,\n      pageSize: 10,\n    },\n    defaultBindingData: {\n      page: 1,\n      pageSize: 10,\n      total: 0,\n      lists: [],\n    },\n  },\n})\nclass ListView extends Component {\n  changePage = (pageNo) => {\n    this.props.updateBindingData('accountTable', {\n      data: {\n        page: pageNo,\n      },\n    });\n  };\n\n  render() {\n    const { accountTable } = this.props.bindingData;\n\n    return (\n      <div>\n        当前 Table 数据：{accountTable.lists}\n        <Pagination\n          current={accountTable.page}\n          pageSize={accountTable.pageSize}\n          total={accountTable.total}\n          onChange={this.changePage}\n        />\n      </div>\n    );\n  }\n}\n```\n\nDataBinder 不会在组件初始化的时候帮你自动请求一次，因为有些 DataSource 不需要默认就请求一次。如果你需要在初始化的异步请求数据，就需要在合适的生命周期中主动调用该方法，比如组件即将渲染的时候拉取数据：\n\n```jsx\n@DataBinder({...})\nclass ListView extends Component {\n  componentDidMount() {\n    // 拉取第一页的数据\n    this.props.updateBindingData('accountTable', {\n      data: {\n        page: 1\n      }\n    });\n  }\n}\n```\n\n**4. 处理 Loading 逻辑和效果**\n\nAJAX 是异步的，为了更好的用户体验，推荐添加一个 Loading 效果组件来给用户请求中的反馈。\n\n每一个 DataSource 模块的数据附带了一个私有属性 `__loading` 来标记当前模块是否正在请求过程中，这样你可以在组件 render 中读取这个数据来判断是否正在加载数据。比如 Table 组件内部封装了一个 Loading 的效果，需要使用 `isLoading` props 进行配置，那么就可以写：\n\n```jsx\nconst { accountTable } = this.props.bindingData;\n\n<Table dataSource={accountTable.lists} isLoading={accountTable.__loading}>\n  ...\n</Table>;\n```\n\n你也可以使用 `Loading` 组件进行 loading 效果的模拟，参照文档可以写出如下代码：\n\n```jsx\nimport DataBinder from '@icedesign/data-binder';\nimport { Loading } from '@alifd/next';\n\n@DataBinder({\n  account: {\n    // 接口返回数据：{status: 'SUCCESS', data: {foo: 'bar'}}\n    url: '/getdefaultBindingData.json',\n    defaultBindingData: {\n      foo: null,\n    },\n  },\n})\nclass ListView extends Component {\n  componentDidMount() {\n    this.props.updateBindingData('account');\n  }\n\n  refresh = () => {\n    this.props.updateBindingData('account');\n  };\n\n  render() {\n    const { account } = this.props.bindingData;\n\n    return (\n      <div>\n        <Loading\n          state={account.__loading ? 'on' : 'off'}\n          shape=\"fusion-reactor\"\n        >\n          <div>当前 foo 的值为：{account.foo}</div>\n        </Loading>\n        <div style={{ marginTop: 20 }}>\n          <Button onClick={this.refresh}>点击重新请求</Button>\n        </div>\n      </div>\n    );\n  }\n}\n```\n\n效果如图示：\n\n![](//img.alicdn.com/tfs/TB1qLUVPXXXXXXqaXXXXXXXXXXX-706-372.gif)\n\n此外，根模块也有一个 `__loading` 属性（即：`this.props.bindingData.__loading`），用来标记当前注册的所有模块中是否有某个模块在发送 AJAX 请求。这样可以便于进行全局的提示，比如一个 AJAX 请求全局提示标记等。\n\n## 参数配置\n\n### DataBinder decorator 用法\n\n调用方法：\n\n```js\n@DataBinder({\n  模块key: {\n    url: 'xxx.json',\n    //... AJAX axios 配置\n    responseFormatter: (responseHandler, res, originResponse) => {\n      // 做一些数据转换\n      const newRes = {\n        status: res.code !== 0 ? 'SUCCESS' : 'ERROR',\n        message: res.successMsg,\n      };\n      // 回传给处理函数\n      // 不做回传处理会导致数据更新逻辑中断\n      responseHandler(newRes, originResponse);\n    },\n    defaultBindingData: {\n      foo: 'bar',\n    },\n  },\n})\nclass ListView extends React.Component {\n  render() {\n    const key = this.props.bindingData.key;\n\n    return <div>{key.foo}</div>;\n  }\n}\n```\n\n* `dataSouce` 内容为符合 [axios](https://github.com/axios/axios) 的请求参数。\n* `responseFormatter` 用来做老接口数据转换用，老接口如果不按照现有模式需要进行一层数据转换处理。\n* `defaultBindingData` 内容为接口对应字段的默认数据，在 render 中使用 `this.props.bindingData` 获取。\n\n## 接口 API\n\n以下 API 会注入到 Class 中，通过 `this.props.xxxx` 的方式调用。\n\n| API 名                         | 说明                           | 是否有参数 | 参数类型                                        | 参数值 | 备注                                                         |\n| ------------------------------ | ------------------------------ | ---------- | ----------------------------------------------- | ------ | ------------------------------------------------------------ |\n| `this.props.updateBindingData` | 获取更新 DataSource 的数据     | true       | key: string, params: object, callback: function |        | `this.props.updateBindingData('account', {data: {page: 5}})` |\n| `this.props.getDataSource`     | 获取某个 DataSource 的默认配置 | true       | key: string                                     |        |                                                              |\n\n## 后端接口协议\n\n配置的 AJAX 接口需要按照一定的协议规则实现：\n\n**request:**\n\n业务接口自定。\n\n**response:**\n\n```json\n{\n  \"status\": \"SUCCESS\",\n  \"message\":\n    \"接口请求完成的提示，可有可无，status 为非 SUCCESS 时会显示报错的 UI\",\n  \"data\": {\n    \"foo\":\n      \"data 是具体的数据，需要与该接口定义的 defaultBindingData 字段结构保持一致\"\n  }\n}\n```\n\n## 自定义 requestClient\n\n如果你的项目 ajax 模块进行了统一配置和通用处理的封装，或者使用 ws 或者其它的 RPC 手段进行网络通信，DataBinder 允许对请求客户端进行自定义。\n在 DataBinder 传递第二个参数对象，并指定 requestClient 为一个返回 promise 的请求函数。该 Promise resolve 的值为 response 对象，该 response 对象必须包含一个 data 字段，值为返回的数据。\n\n**DEMO**\n\n```jsx\nimport jsonp from 'jsonp';\n\n/**\n * 自定义的 json request client\n */\nfunction request(opts) {\n  return new Promise((resolve, reject) => {\n    jsonp(opts.url, { name: 'callback' }, (err, data) => {\n      if (err) {\n        reject(err);\n      } else {\n        resolve({ data });\n      }\n    })\n  });\n}\n\n@DataBinder({\n  account: {\n    // 这里的所有字段会作为参数传递给 requestClient\n    url: 'https://ice.alicdn.com/assets/mock/53141.jsonp.js',\n  }\n}, { requestClient: request })\nexport default class extends React.Component {\n  // ...\n}\n```\n\n\n## 常见需求\n\n#### 发送数组类型数据，key 自动加了 `[]` 怎么办？\n\n当你传输的 data 中有个 key 数据（例如：items）为数组格式时，提交给后端 key 会自动添加 `[]`（例如：items[]=xxx、items[]=yyy）。如果你不需要这种功能，希望使用原本的 key 进行提交，可以添加下面配置解决：\n\n```js\n{\n  serializeArray: false;\n}\n```\n\n#### 接口是老版本接口，不符合 DataBinder 接口协议如何处理？\n\n配置 DataSource 时，添加 `responseFormatter` 配置进行数据处理，然后返回符合规范的数据。\n\n#### 自定义请求成功、失败的提示和逻辑\n\n在 DataSource 配置部分自定义 success、error callback 实现，以 success 为例：\n\n```js\n@DataBinder({\n  key: {\n    url: 'xxx.json',\n    success: (res, defaultCallback, originResponse) => {\n      console.log('请求成功了，返回的数据为', res)\n      // 执行默认的逻辑请求成功逻辑\n      // 通常为弹出反馈 Toast\n      defaultCallback();\n      // originResponse 内容请参见：https://github.com/axios/axios#response-schema\n    },\n    defaultBindingData: {\n      foo: 'bar'\n    }\n  }\n})\nclass ...\n```\n\nerror callback 的参数和逻辑同 success。\n\n\n","readmeFilename":"README.md","_id":"@icedesign/data-binder@1.0.0","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"sobear","email":"sobear.me@gmail.com"},"dist":{"integrity":"sha512-kYsNSFGXKu9ULp3DlYwhLTZh3P9qbCSBdKaSM7NIhFy/cAqMAqfcicfOwYUBLpNiPgRfKRsqOenuVTolfaFfDQ==","shasum":"00ff8c4774d2aa8c38365d743a76b548b48d2ae4","tarball":"https://registry.npmjs.org/@icedesign/data-binder/-/data-binder-1.0.0.tgz","fileCount":16,"unpackedSize":42672,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcNbXGCRA9TVsSAnZWagAAy2YP+wdhWbp7tB0mJ7+zzFNq\nef/rLi46zJdvh88oeZXjiufQ4fo6BlE3jA9GfviyayUY9h/yZSfluPcCrKHF\nYMg1dClnA42tIFdnLZRxHJN31SeuwDk4WgIF+vLfuy8KWuf3Xrm8xVRqLLz1\nyCs7D0xMyGJ250CX7APEG0QqCuzuVIqQmu/FendCq6ZMMs9FQQH41y1hWddY\nlvyhIkQdDFJhM+20j5deHyv6AA9rISt51t45z0wtuT0MQO0gIR/Ld23timZE\n0Nao7aLI5PXLUsxbcrH0gyHrC2f6hensBIufQiGsTLd1HbDUDqQn8ovWVxA6\nyrfZpWlmlc9eeHLUJmPyiJ4rnDuh1oTC7Jxip4BsjuXFdrF1X72CUJMNiMSy\nsSaK2HDgZ+aPizc9Pensgg5G4GFPiICTNW/+D7JHO8qGEJKNEYsAM+SYq1E8\n4FYzDXThmw1jeKssbz6S6G/hcQPDE7miauWgwVsNB0NUKUqmCeZgi5hvXZuS\nT2aSFBFldmpL/dgDrSk6d6KQJZYRg90ocTBbiw2uUZ6qFH6cN32x28FOce7Y\naQcQP4d4AcLJ9Om1Bdy3CF0sesJhXMTvK/iDGfdx+2UaXKLb0kpNDczFVER+\neUZvY8nJt8dIQpqTiDvx7Em8pNhljBmdsGcp0SHNamw9t2FVCA7cjPe9Vu5J\ngUy1\r\n=Xcv5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD0TMBPhog3FC5MvD9SpOTDzHFLGwiWQ5AV0eGISgUgigIgUWlD61u5jC+v7XWl4nqIacnD/5CHA+kwkvFi8j4vL1E="}]},"maintainers":[{"email":"chenbinad@gmail.com","name":"chenbin93"},{"email":"chenjun1011@gmail.com","name":"chenjun1011"},{"email":"yudong.myd@alibaba-inc.com","name":"empireo"},{"email":"fenglai0802@163.com","name":"fenglai"},{"email":"noyobo@gmail.com","name":"noyobo"},{"email":"sobear.me@gmail.com","name":"sobear"},{"email":"tao360907796@gmail.com","name":"tao1991123"},{"email":"temper357@gmail.com","name":"temper357"},{"email":"yuanyan.cao@gmail.com","name":"yuanyan"},{"email":"hi@harryyu.me","name":"yujiangshui"},{"email":"wssgcg1213@qq.com","name":"zeroling"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/data-binder_1.0.0_1547023813426_0.48276045545171176"},"_hasShrinkwrap":false},"1.0.1":{"name":"@icedesign/data-binder","version":"1.0.1","description":"ICE 前后端数据绑定、交互方案","main":"lib/index.js","scripts":{"start":"ice-devtools start","build":"ice-devtools build","prepublishOnly":"npm run build","postinstall":"node ./postinstall.js"},"repository":{"type":"git","url":"https://github.com/alibaba/ice/tree/master/react-materials/components/data-binder"},"license":"MIT","keywords":["ice","ice-component"],"peerDependencies":{"react":"^16.5.0"},"dependencies":{"@alifd/next":"^1.11.7","axios":"^0.18.0","deepmerge":"^2.0.1","pure-render-decorator":"^1.2.1"},"devDependencies":{"body-parser":"^1.15.2","cors":"^2.8.1","express":"^4.14.0","jsonp":"^0.2.1","react":"^16.5.0","react-dom":"^16.5.0"},"componentConfig":{"name":"data-binder","title":"ICE 前后端数据绑定、交互方案"},"_id":"@icedesign/data-binder@1.0.1","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"sobear","email":"sobear.me@gmail.com"},"dist":{"integrity":"sha512-N3XAoMmAmnbRMlXuqrfdpyLnwTROyWfpxzIE5VSyTyKdZJyptaDGmtz2lg6Z3fPL1ywzSnhnUY/zlgA9lMgjgA==","shasum":"48faa255f2e6cf2aef97569201c6eb32c04f8638","tarball":"https://registry.npmjs.org/@icedesign/data-binder/-/data-binder-1.0.1.tgz","fileCount":16,"unpackedSize":42835,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcc5SuCRA9TVsSAnZWagAA2rEP/jjkScW1agHZr9rihEjq\nJMw8Z/b8FvVDCfeNwB3SPRVcCv+bpa6t1/M+eEFvAhNuEdL9TZ6idWQJDk0l\nJYArZQg2AjppyXaxuolES909Dt8c6vzxUMkJdGfPMf3toSf9XAw0jSKgR35d\nSO6VDOSVP8Y5Js+qg9MdhO9zpeUPHjTCcW21qsPT1ZZpwSLL58BBuYSHmKWn\noW+AsZd5UMfPAxS0RVltYBMzN5oyafO85B1M6gy4kmnGONPdWfmDYwafuZ2r\nMGChvbR/eWPfTIyaRHW1F/VnHpw9pbqxfyAC3WBn8A7eUB2N+4R96CA4GjTc\nKe7lKRkjKWQgD7fJSHPTysT4mazpY9Uohut6B3k6JMe+7++JFQ+zJ/clysvo\nkY1Bu/fthEPviJOfIUi7MDmXHoyIY4zLkWudcv/t0FjmlcWh3iU7nbM10twW\nKxq1ZKpjMhi0yg52mmhCXf5duF6D+HPFxquSoJ0ppcMB6jkEnQPySIEcuAe0\nJTcJOepajExSCBu/Lx1YruNXd94oQ9qe+O/XBkjjRpnECumd1PDXjzKG6D/B\nvErZcrI/AeCI7hwZNcR4dYzZbL/F4wXISWvysPRZvB+vqiPVjl4u+aMmcrvf\nSslGIlP0Pn/jwSER/qKjZAFlWC4cWrOOSOohZ2WSCf7XqKcY+TwnPpgTNteb\n6kAe\r\n=gU1v\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICr8LU+MLblkAkZP+freFIefCSvbSSUER0skPskaGyzEAiBZ8NXkz4rCYHGiMQoB4GM/b3Hjd26qAy02QkVxB5ZTxA=="}]},"maintainers":[{"email":"bindoon@sina.com","name":"bindoon"},{"email":"chenbinad@gmail.com","name":"chenbin93"},{"email":"chenjun1011@gmail.com","name":"chenjun1011"},{"email":"yudong.myd@alibaba-inc.com","name":"empireo"},{"email":"fenglai0802@163.com","name":"fenglai"},{"email":"noyobo@gmail.com","name":"noyobo"},{"email":"sobear.me@gmail.com","name":"sobear"},{"email":"tao360907796@gmail.com","name":"tao1991123"},{"email":"temper357@gmail.com","name":"temper357"},{"email":"yuanyan.cao@gmail.com","name":"yuanyan"},{"email":"hi@harryyu.me","name":"yujiangshui"},{"email":"wssgcg1213@qq.com","name":"zeroling"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/data-binder_1.0.1_1551078573454_0.40130420209277085"},"_hasShrinkwrap":false},"1.0.2":{"name":"@icedesign/data-binder","version":"1.0.2","description":"ICE 前后端数据绑定、交互方案","main":"lib/index.js","scripts":{"start":"ice-devtools start","build":"ice-devtools build","prepublishOnly":"npm run build","postinstall":"node ./postinstall.js"},"repository":{"type":"git","url":"https://github.com/alibaba/ice/tree/master/react-materials/components/data-binder"},"license":"MIT","keywords":["ice","ice-component"],"peerDependencies":{"react":"^16.5.0"},"dependencies":{"@alifd/next":"^1.11.7","axios":"^0.18.0","deepmerge":"^2.0.1","pure-render-decorator":"^1.2.1"},"devDependencies":{"body-parser":"^1.15.2","cors":"^2.8.1","express":"^4.14.0","jsonp":"^0.2.1","react":"^16.5.0","react-dom":"^16.5.0"},"componentConfig":{"name":"data-binder","title":"ICE 前后端数据绑定、交互方案"},"_id":"@icedesign/data-binder@1.0.2","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"sobear","email":"sobear.me@gmail.com"},"dist":{"integrity":"sha512-JwfX2GJ1iQ/DpCPCdLwY1CfCpj7UlZPYQImRlmLHsXMlO5iTZmXIyFWrwJQyN2K3PctBgBXLBlS9T9NXWGO3pw==","shasum":"71ad1427228a3876c3f342aacdd1d46d10c9c55a","tarball":"https://registry.npmjs.org/@icedesign/data-binder/-/data-binder-1.0.2.tgz","fileCount":16,"unpackedSize":45048,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcc5aDCRA9TVsSAnZWagAAcAEP/AgvbR7uHvbMY1ky8EwS\n5vVp2F3Y8+FhmlaPZdCWKeYEpLhEpW5I2flrOPdx8hW7cYx5KjZRQ28xH/Va\nRy3N15R7GSlN/RauDi0WbP7xYxtyA7tmkvfi7AUJ2x7n05DkLvHw+yemp+2Z\ngJKKBQE+ozOkRnvl4w4RNBXF+coxFmAwBxa4BnhAq+eyewI3YKzl/zm3PL/N\nCD7SBRiRO+fyuWh9hA77wJ3jhHG9VGBkpOngrB8Opp3YKWEVryBUI2WSoLY8\nf4QtcXwoMcY6DIPYSjY9/1JqozavaUYZ4aUUr6Qmi4yBmCko19+/hnjuGoqB\nw97lAKGi1MgcKMDZrq2NnRdwXFlKk3jJ331pcpPOurdatfXdoBAZ49NvSd00\ngZKUTrP0tBHDcXemG3M75ZvB9Mkyg+Dh01mDgBEo7+0RulbYKCkZ5GnIMu3e\n9hFEHKUQ2OMLOXO7OOUbFTp3B/beXqAvXtqT9Wh59ss+xSH5cY46LcYE9LXG\n8167UE9RJbWyUhioRpttPUDYFmpHyMVHYhIdo6fAln1TSPUkW79r25sisQOf\nDpb907/kkW4RC/E2YKvjUNn2UDzrm8wksIKhy0DW8B3KxVSZDPsbjdT81zR6\nOscAqGcdNchWmyOr2cdDhjXTRKsKjTZNyATp8mJlkTYwvwt8E7G2nIEKMgeZ\nc56e\r\n=ZtfQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCd3byGWppUPM3tkrq2oudrgWNelMUbBS35Ndi/pGIHlwIhAMhrATEZe8acWTX9jkxm7Wq+8aXj9vtMhMsXbAecdEpM"}]},"maintainers":[{"email":"bindoon@sina.com","name":"bindoon"},{"email":"chenbinad@gmail.com","name":"chenbin93"},{"email":"chenjun1011@gmail.com","name":"chenjun1011"},{"email":"yudong.myd@alibaba-inc.com","name":"empireo"},{"email":"fenglai0802@163.com","name":"fenglai"},{"email":"noyobo@gmail.com","name":"noyobo"},{"email":"sobear.me@gmail.com","name":"sobear"},{"email":"tao360907796@gmail.com","name":"tao1991123"},{"email":"temper357@gmail.com","name":"temper357"},{"email":"yuanyan.cao@gmail.com","name":"yuanyan"},{"email":"hi@harryyu.me","name":"yujiangshui"},{"email":"wssgcg1213@qq.com","name":"zeroling"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/data-binder_1.0.2_1551079042951_0.12869435700084875"},"_hasShrinkwrap":false},"1.0.3":{"name":"@icedesign/data-binder","version":"1.0.3","description":"ICE 前后端数据绑定、交互方案","main":"lib/index.js","scripts":{"start":"ice-devtools start","build":"ice-devtools build","prepublishOnly":"npm run build","postinstall":"node ./postinstall.js"},"repository":{"type":"git","url":"https://github.com/alibaba/ice/tree/master/react-materials/components/data-binder"},"license":"MIT","keywords":["ice","ice-component"],"peerDependencies":{"react":"^16.5.0"},"dependencies":{"@alifd/next":"^1.11.7","axios":"^0.18.0","deepmerge":"^2.0.1","pure-render-decorator":"^1.2.1"},"devDependencies":{"body-parser":"^1.15.2","cors":"^2.8.1","express":"^4.14.0","jsonp":"^0.2.1","react":"^16.5.0","react-dom":"^16.5.0"},"componentConfig":{"name":"data-binder","title":"ICE 前后端数据绑定、交互方案"},"_id":"@icedesign/data-binder@1.0.3","_npmVersion":"6.4.1","_nodeVersion":"10.11.0","_npmUser":{"name":"chenjun1011","email":"chenjun1011@gmail.com"},"dist":{"integrity":"sha512-iW8Mfkc7nKRWP5yApa5ELBYfZ9FaJky2RxXxmL73YSinfOCC0qX9Hm5zZRhYl7kyNAb2u3E89imCsjsf+Hh63Q==","shasum":"3a0183e072fb0dc6577a88bf1d638a32f8b83f8c","tarball":"https://registry.npmjs.org/@icedesign/data-binder/-/data-binder-1.0.3.tgz","fileCount":19,"unpackedSize":880871,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcfLcPCRA9TVsSAnZWagAAptgQAKKLR44C6nCsvoXxhbt0\nSz5cAlU1GR0LRqfuhuT24SCQVDGlKKAsi4QeXM/LAWi52F8b5n/ikAveUQmi\nzsWx0+HU9LN/982hynkaNj6P8GhFHx9WtvHVL4TQaDhfmr9dY3bSVptavHhU\noNQ04roRjruGwIbsfduBY5xfeDMTcOe6vzWX87xeUoQSufw7AtCshr86u4Hw\n7IQnjBcTp/ccwGupbgZc6Tyjf9rL1iphetdcWFQzcllwnjhktvIkvue1JQHr\ntecKvsTcBnrDBGjOnl+lwhdWKasmsteicAauAEUTZacBJbmHEQ61OKEmiCyw\nPYPbs47Lc3FedvSmvyDrskJyFZd+5SLFDe9YnjryxrM0uBW89h7ubwnK58yx\nkk2pI1UUiUAFxqMBmB3Hn1uKnB9IoCKaRGpguyezny2wWbteTJNpeH4jt5Zr\nxzK5+PbyQUSiN11iXGcSdmJPDFkEFp4MqKCJn3DV2yMq+eczrhwH5R8W/T/B\nfzsiK3yrHmInf6EH+63UBPZOBt5X67QCT3PYLuUdcXBDOrdxplvdbMiQOGqL\nPOPE4nV+t2aicmlZOdseI5SICFE5LQZsShd4V+2znJ694n5lYgEr9G2N3t79\nzLJAB1tTc4VjyeRY3qNMmt+8ME06WR2VH8Tjutk8qY4nC5bfpAZlVpS+8HMk\nmh2f\r\n=GG8D\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDuO5AYo7a4Dvcp5xYLFnnqkHARtxc9e2ybd45MZdmvCwIgQII8IkM40ISsn/YqPJxOI9Mu2Ppw1pUQEw/h3Bie1/A="}]},"maintainers":[{"email":"bindoon@sina.com","name":"bindoon"},{"email":"chenbinad@gmail.com","name":"chenbin93"},{"email":"chenjun1011@gmail.com","name":"chenjun1011"},{"email":"yudong.myd@alibaba-inc.com","name":"empireo"},{"email":"fenglai0802@163.com","name":"fenglai"},{"email":"noyobo@gmail.com","name":"noyobo"},{"email":"sobear.me@gmail.com","name":"sobear"},{"email":"tao360907796@gmail.com","name":"tao1991123"},{"email":"temper357@gmail.com","name":"temper357"},{"email":"yuanyan.cao@gmail.com","name":"yuanyan"},{"email":"hi@harryyu.me","name":"yujiangshui"},{"email":"wssgcg1213@qq.com","name":"zeroling"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/data-binder_1.0.3_1551677199200_0.8790967548106752"},"_hasShrinkwrap":false},"1.0.4":{"name":"@icedesign/data-binder","version":"1.0.4","description":"ICE 前后端数据绑定、交互方案","main":"lib/index.js","scripts":{"start":"ice-devtools start","build":"ice-devtools build","prepublishOnly":"npm run build","postinstall":"node ./postinstall.js"},"repository":{"type":"git","url":"https://github.com/alibaba/ice/tree/master/react-materials/components/data-binder"},"license":"MIT","keywords":["ice","ice-component"],"peerDependencies":{"react":"^16.5.0"},"dependencies":{"@alifd/next":"^1.11.7","axios":"^0.18.0","deepmerge":"^2.0.1","pure-render-decorator":"^1.2.1"},"devDependencies":{"body-parser":"^1.15.2","cors":"^2.8.1","express":"^4.14.0","jsonp":"^0.2.1","react":"^16.5.0","react-dom":"^16.5.0"},"componentConfig":{"name":"data-binder","title":"ICE 前后端数据绑定、交互方案"},"homepage":"https://unpkg.com/@icedesign/data-binder@latest/build/index.html","_id":"@icedesign/data-binder@1.0.4","_npmVersion":"6.4.1","_nodeVersion":"10.11.0","_npmUser":{"name":"chenjun1011","email":"chenjun1011@gmail.com"},"dist":{"integrity":"sha512-4/ipS46Llj0CYGPC8MN5MMZW6j556h0oQlfSTnQD/DPyZ2Crbip2Wx7zrATG/pga5Lx2SvZPF9wfs+m1s6wN2Q==","shasum":"18fdb4afb7fb7df2967049a914e434322e3f5c0a","tarball":"https://registry.npmjs.org/@icedesign/data-binder/-/data-binder-1.0.4.tgz","fileCount":19,"unpackedSize":880952,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcfOcSCRA9TVsSAnZWagAAHEgP/RO0BM3Is3PK63qppS1s\nQdgU+jQjx3JMy54LXU2XaXwPKu4g2TNHuBBE6lbddgC6JCkMPHQqgMNtVAy4\n+Ji2K51wLKgQl2vF9gAiaUYvDRsgVckgf1/KM2UJGbxgC+xnpubyxTZHuaih\n3RerblOLFJEXO4Q+D/8MVpUcmGB+FCREw0HAmANOU5Zp4STyBFs7/4MKPEnJ\nJGP0I7Z0sZJBgaxM3VCJ4jJMpDKgxK01vRVs8/+DCpb/97woC3I57emwAEk7\n7wbd1iBDASoJO9+vSqXofTpsG6f7pEEIA4ANkhFgLyijO3x73SS/dESAZxT6\nsgILe+aCUhTZCCBsvaaADDLVKwt+JqhZMFwixNCXSqp0lkzTS3b0VLwqTXzI\ny7u2KnWNhFOcgCO4t4iZwwVjTO+pvW+v7WzvFOs6DvL3SY26pFADmPqsq+q5\nrjXZJ6hMmucjEJ7HoSQwPuh87E6te79Nk72QBqVxUlEQM+YiZpYiBRrcGzJC\nFiT6lhsX8sgy/N3q1VovL3hTuKzEAgO9DjeTMn3bBq71p72zqd9OL1zLaSGr\n+u3/2pOqKIA/p3fZJGETDN+hwZ9A4SqGCCkcapVpYky597MxNK1BHChxItIC\nPktxsSEW99ILxSDXcoACzDzQvzrDnr4uDdbPHEqMtFgrKzYA3mDqQ55jLb5d\n8R1R\r\n=aNef\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHzkkAhVqCbOqm8YgQXOjt+zO6oxGg/23lbkLSy6Tf7MAiBbfz4FZwacEsAgIfCL1Z9DKQKF9+JJWxuq6yBT88BeFw=="}]},"maintainers":[{"email":"bindoon@sina.com","name":"bindoon"},{"email":"chenbinad@gmail.com","name":"chenbin93"},{"email":"chenjun1011@gmail.com","name":"chenjun1011"},{"email":"yudong.myd@alibaba-inc.com","name":"empireo"},{"email":"fenglai0802@163.com","name":"fenglai"},{"email":"noyobo@gmail.com","name":"noyobo"},{"email":"sobear.me@gmail.com","name":"sobear"},{"email":"tao360907796@gmail.com","name":"tao1991123"},{"email":"temper357@gmail.com","name":"temper357"},{"email":"yuanyan.cao@gmail.com","name":"yuanyan"},{"email":"hi@harryyu.me","name":"yujiangshui"},{"email":"wssgcg1213@qq.com","name":"zeroling"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/data-binder_1.0.4_1551689490047_0.06366004940010228"},"_hasShrinkwrap":false},"1.0.5-0":{"name":"@icedesign/data-binder","version":"1.0.5-0","description":"ICE 前后端数据绑定、交互方案","main":"lib/index.js","scripts":{"start":"ice dev","build":"ice build","prepublishOnly":"npm run build"},"repository":{"type":"git","url":"https://github.com/ice-lab/react-materials/tree/master/components/data-binder"},"license":"MIT","keywords":["ice","ice-component"],"dependencies":{"@alifd/next":"^1.11.7","axios":"^0.18.0","deepmerge":"^2.0.1","pure-render-decorator":"^1.2.1"},"peerDependencies":{"react":"^16.5.0"},"devDependencies":{"body-parser":"^1.15.2","cors":"^2.8.1","express":"^4.14.0","jsonp":"^0.2.1","querystring":"^0.2.0","react":"^16.5.0","react-dom":"^16.5.0"},"componentConfig":{"name":"data-binder","title":"ICE 前后端数据绑定、交互方案"},"homepage":"https://unpkg.com/@icedesign/data-binder@1.0.5-0/build/index.html","readme":"---\ntitle: DataBinder\ncategory: Components\nchinese: 数据交互方案\n---\n\nICE 前后端数据绑定、交互方案。灵感来源于 Webx，基于一定的**约定**帮你在组件上绑定一些数据和用来更新数据的 API，让你专注于 render 方法中界面显示逻辑，从而屏蔽掉 AJAX、state 管理等开发成本。\n\n## API\n\n以下 API 会注入到 Class 中，通过 `this.props.xxxx` 的方式调用。\n\n| API              |  说明          |  类型   | 默认值 | 备注   |\n| --------          | ---------    | ------ | ------ | ------- |\n| updateBindingData | 更新数据源 | func       |        |      |\n| bindingData     | 返回数据     | object    |         |      |\n\n## 使用\n\n### 1. 配置数据源\n\nDataBinder 基于 HOC 的思路，采用 decorator 的方式使用，即在 class 上面调用并配置相关信息即可生效。\n\n```jsx\n@DataBinder({\n  '模块名 key': {\n    // AJAX 部分的参数完全继承自 axios ，参数请详见：https://github.com/axios/axios\n    url: 'http://xxxx.json',\n    method: 'GET',\n    params: {\n      page: 1\n    },\n    // 接口默认数据\n    defaultBindingData: {\n    }\n  }\n})\nclass ListView extends Component {\n  ...\n}\n```\n\n详细的解释下：\n\n* 模块名 key：**必填**，每个 key 代表一个数据源（接口）\n* defaultBindingData: **选填** 该字段配置当前模块数据初始化默认值，如果当前模块有异步接口配置，则模块的字段需要与接口返回的数据字段一一对应。该参数可选，因为有些接口只需要提交成功即可，无需 UI 变化。\n* 其他：**选填**，配置请求相关参数，完成前后端通信，默认基于 [axios](https://github.com/axios/axios)，因此这里可以使用 axios 的任意参数。同时业务可以自定义其他 request client。\n\n### 2. 请求并使用数据源\n\n对某个 React class 添加 DataBinder 绑定配置之后，DataBinder 会通过 HOC 在组件上添加一个 props `bindingData`，用来存放配置的所有数据，模块 key 为你对应的 DataSource key 的前部分，比如：配置 `account` 可以通过 `this.props.bindingData.account` 获取到被绑定的数据，第一次为 `defaultBindingData` 里面配置的数据。\n\n因此你可以在你 render 部分的代码编写如下代码调用：\n\n```jsx\n@DataBinder({\n  listData: {\n    url: '/getAccountTableList.json',\n  },\n})\nclass ListView extends Component {\n  componentDidMount() {\n    // 组件加载时获取数据源，数据获取完成会触发组件 render\n    this.props.updateBindingData('dataSource');\n  }\n\n  render() {\n    const { listData } = this.props.bindingData;\n    return (\n      <div>\n        <Table loading={listData.__loading} dataSource={listData.list} />\n      </div>\n    );\n  }\n}\n```\n\n## 常见问题\n\n### 接口协议规范\n\nDataBinder 对数据接口的 response 做了一层规范，不符合该规范的接口将无法正常获取到数据，response 规范：\n\n```json\n{\n  // 必选：标记接口是否成功，非 SUCCESS 都视为失败\n  \"status\": \"SUCCESS\",\n  // 可选：status 为非 SUCCESS 时显示报错 UI 会使用该字段\n  \"message\": \"成功\",\n  // 必选：实际数据，会将 data 下的所有字段挂载在对应的 bindingData 上\n  \"data\": {\n    \"dataSource\": [],\n    \"page\": 1\n  }\n}\n```\n\n如果业务里的接口跟该规范不符，可以通过 `responseFormatter` 做一次转换。具体请参见组件 demo。\n\n### 自定义前后端通信方式 requestClient\n\nDataBinder 默认使用 axios 完成前后端通信，实际场景里业务可能使用 jsonp，RPC 或者其他协议通信，此时需要通过自定义 requestClient 的方式实现，具体请参见组件 demo。\n\n### 自定义请求 callback\n\nDataBinder 默认的请求成功和失败的行为是弹一个 Toast 将接口的 message 字段信息展示出来。如果你需要自定义全局的成功失败行为，可以通过自定义 callback 的方式实现，具体请参见组件 demo。\n\n### 业务自定义 DataBinder\n\n如果业务里出现类似上述所说的场景，比如：接口规范不一致、需要全局统一处理请求失败成功逻辑、使用非 axios 的方式请求数据（比如 jsonp），推荐基于 DataBinder 封装一个自定义的 DataBinder，然后代码里使用自定义 DataBinder.\n","readmeFilename":"README.md","_id":"@icedesign/data-binder@1.0.5-0","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"sobear","email":"sobear.me@gmail.com"},"dist":{"integrity":"sha512-246guXxR13GiSWopsh0QPlI1yI6rIfcDIqNF0sGl9WypTxKkFMOtVjESulKomCebt/miVn1pZvXuEBitRUuCrA==","shasum":"6d666fd0008e2b4a6a7fab302ece711fbaf8d2f1","tarball":"https://registry.npmjs.org/@icedesign/data-binder/-/data-binder-1.0.5-0.tgz","fileCount":18,"unpackedSize":667064,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcxrv2CRA9TVsSAnZWagAAkTkP/0W6Ln8qvTohUS29jYAU\nfEltuVIlmoABZMIqmVVg1ZIkCE/AMVuv+f53JHoOPFf5PXJrKKbsaEvDPBPD\nqe7v5vDwrrOgfX2qfn+xUWrigSsbMrIVr/MpH944WLy8EySujS/8q+Bkp/uO\nTyPcoOEDZd2fH1SHeWbBv/ARIuOl96We1QhFV7UCYjrUpTmKnUXJcSz+r3NG\nc99UKapKCO535FaCFZjBbD3Q1f6BwRhqfDE5n6C1Ndy3DaGnNlGPClMmB3wh\nDFYkrLK8Ta9IK/dmYLbSfmSHURH1moxdW4droIsh9nw15c0iVXqiSyYt9E1o\nKfTrQ1VylxQFJfLMp/9J7yVyaBpPy0lcVnnNrhmw2GombqeYmNHaD6ucBzeD\ner/udNtbvPNv/sm6AGm9yQXZorjJdWy6JfX1BR4s01yLoDTHK7/P9eDkTChS\n5GsanpwHFqSWmrCn/ymyhnHH8i7V8FrYJ6C4IfManvuRilbwt85Dfsx5tYpb\nDUaGPzxNZxTG2tNl3Z7KhmoJFQ0zyoa1agQAsjAjf7ln3Mrac9gtMcP+WOGn\n3lgL4nK/eCefDj76QTc6UpE5/fSYr582K368RISddq4Q1afLJGx+0SR4LjZl\ngUrfPU8g7BSD8i85KxCi2RDd/g08YAeWnaRaz6kPkEtvXm2Sq5DvaMxagA5Z\nYinl\r\n=70jb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDLipyw53UrxsWz9KuFD1oxa9ZtFglkxpPYDRcU0zZ2qAIgUAS6lHMtsgYRQPIXtrYugG90NRMyR1UemTUOCAesPTk="}]},"maintainers":[{"email":"bindoon@sina.com","name":"bindoon"},{"email":"chenbinad@gmail.com","name":"chenbin93"},{"email":"chenjun1011@gmail.com","name":"chenjun1011"},{"email":"xiawenwu41@163.com","name":"clarkxia"},{"email":"yudong.myd@alibaba-inc.com","name":"empireo"},{"email":"fenglai0802@163.com","name":"fenglai"},{"email":"jasonintju@gmail.com","name":"jasonintju"},{"email":"470040845@qq.com","name":"lip966"},{"email":"noyobo@gmail.com","name":"noyobo"},{"email":"sobear.me@gmail.com","name":"sobear"},{"email":"tao360907796@gmail.com","name":"tao1991123"},{"email":"temper357@gmail.com","name":"temper357"},{"email":"yuanyan.cao@gmail.com","name":"yuanyan"},{"email":"hi@harryyu.me","name":"yujiangshui"},{"email":"yundong.me@gmail.com","name":"yundong"},{"email":"wssgcg1213@qq.com","name":"zeroling"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/data-binder_1.0.5-0_1556528118179_0.8557801737752715"},"_hasShrinkwrap":false},"1.0.5":{"name":"@icedesign/data-binder","version":"1.0.5","description":"ICE 前后端数据绑定、交互方案","main":"lib/index.js","scripts":{"start":"ice dev","build":"ice build","prepublishOnly":"npm run build"},"repository":{"type":"git","url":"https://github.com/ice-lab/react-materials/tree/master/components/data-binder"},"license":"MIT","keywords":["ice","ice-component"],"dependencies":{"@alifd/next":"^1.11.7","axios":"^0.18.0","deepmerge":"^2.0.1","pure-render-decorator":"^1.2.1"},"peerDependencies":{"react":"^16.5.0"},"devDependencies":{"body-parser":"^1.15.2","cors":"^2.8.1","express":"^4.14.0","jsonp":"^0.2.1","querystring":"^0.2.0","react":"^16.5.0","react-dom":"^16.5.0"},"componentConfig":{"name":"data-binder","title":"ICE 前后端数据绑定、交互方案"},"homepage":"https://unpkg.com/@icedesign/data-binder@1.0.5/build/index.html","_id":"@icedesign/data-binder@1.0.5","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"sobear","email":"sobear.me@gmail.com"},"dist":{"integrity":"sha512-n3UETYosOU/IrZNLwmraJUnRL0c6ufvC5fvxeF/QMXBKvwo5691+4ViRevhO1LW99wAg1torkvmcQpqOSKGAtA==","shasum":"16efdff0a1aea0f51425e028c00d1d3f4e1e3961","tarball":"https://registry.npmjs.org/@icedesign/data-binder/-/data-binder-1.0.5.tgz","fileCount":18,"unpackedSize":669803,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc05aFCRA9TVsSAnZWagAAX1EQAIeih2UIfTI33j6I3d7C\ndEVVzib7qX86al4iVHaEWKMSYAWcsEC4j202CZEojTr2PrPR08k8EEOsMb0d\nDPCc5yAcKnDeg8taLcBOwdZ9cTagUT9aQur9WG8UUBfnvXdbSYg2YnAQfkI4\ngdr8btxARCfhZvjQGgbeAZBRz0eLPzKNZVlbybucBF5wGOF+34eIiQDeLGQJ\nYadQPRCO62vVAFemu8NVlVJoY+2UzbG6kDDhB+b8kkZuqRlJJWGIow+ZWwIV\n58mbzUDfLmlpcolc/4lee0fxEDxfDEG5/4IY22FV2mzJ3jEdZ5o+y/ainqTF\nzjPJ/QrbdCY6EcpfGtISM8SrU4IByBp4YTQFo64U+5HGZJj9avnh5V8ddYEA\nBbDMDSisZz8Y1OGPe13ggh3z/nd78Z5+CYsUzhqMxe06ZN0u4TGs1YzWshBw\nFC5BVKnghnOHSezPrKZXu9qArE46w0NXca15G7DZahy1CgUhHVGCOpT1wZfS\nPkbWT+eZugRofr81rJXTDleGV4CuIKUHZCjY2+VgYRFTeW5aYP4HPgL0LXHa\nodszmgjkI29zGWfkVNiKJTu9u64JlabOcR6KcCxVN5qTe1oyNun9ZY2CHjth\n7BY/xTmWiP0OEgzXWYEpe9desO2zfNOfpgQwnYfktcpr1uOpqT5RyxhP4VXl\nrvIj\r\n=Mmxu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEcJf5IUrDsdjaFdQzTKCS4EqnsxV7Sajw4bgl6TDUYOAiATxIxqe4aXv9L/NJ9C0hXGpmnjvAEqrxbkTdOwPTHylw=="}]},"maintainers":[{"email":"bindoon@sina.com","name":"bindoon"},{"email":"chenbinad@gmail.com","name":"chenbin93"},{"email":"chenjun1011@gmail.com","name":"chenjun1011"},{"email":"xiawenwu41@163.com","name":"clarkxia"},{"email":"yudong.myd@alibaba-inc.com","name":"empireo"},{"email":"fenglai0802@163.com","name":"fenglai"},{"email":"jasonintju@gmail.com","name":"jasonintju"},{"email":"470040845@qq.com","name":"lip966"},{"email":"noyobo@gmail.com","name":"noyobo"},{"email":"sobear.me@gmail.com","name":"sobear"},{"email":"tao360907796@gmail.com","name":"tao1991123"},{"email":"temper357@gmail.com","name":"temper357"},{"email":"yuanyan.cao@gmail.com","name":"yuanyan"},{"email":"hi@harryyu.me","name":"yujiangshui"},{"email":"yundong.me@gmail.com","name":"yundong"},{"email":"wssgcg1213@qq.com","name":"zeroling"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/data-binder_1.0.5_1557370500875_0.9754376929903892"},"_hasShrinkwrap":false},"0.1.12":{"name":"@icedesign/data-binder","version":"0.1.12","description":"ICE 前后端数据绑定、交互方案","main":"lib/index.js","scripts":{"start":"ice dev","build":"ice build"},"repository":{"type":"git","url":"https://github.com/ice-lab/react-materials/tree/stable/components-0.x/components/data-binder"},"license":"MIT","keywords":["ice","ice-component"],"peerDependencies":{"react":"^16.5.0"},"dependencies":{"@icedesign/base":"^0.2.0","axios":"^0.18.0","deepmerge":"^2.0.1","pure-render-decorator":"^1.2.1"},"devDependencies":{"body-parser":"^1.15.2","cors":"^2.8.1","express":"^4.14.0","jsonp":"^0.2.1","react":"^16.5.0","react-dom":"^16.5.0"},"componentConfig":{"name":"data-binder","titlle":"ICE 前后端数据绑定、交互方案"},"homepage":"https://unpkg.com/@icedesign/data-binder@0.1.12/build/index.html","_id":"@icedesign/data-binder@0.1.12","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"sobear","email":"sobear.me@gmail.com"},"dist":{"integrity":"sha512-LWq7kS+bhL41K8t8KZHvMneKDtE5c+AIVn+dwwBwCudWp3uL74nYfoYu/bhHXwhubK9Q3Z7yCbcUBUlxfBIyeA==","shasum":"1d3c26b669768fbdda05db47b938ffe630c30bac","tarball":"https://registry.npmjs.org/@icedesign/data-binder/-/data-binder-0.1.12.tgz","fileCount":13,"unpackedSize":40646,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc5QRKCRA9TVsSAnZWagAAQSsQAI3TkIC6KyfD6h0Seh63\nFrdaVefsECkcU3NrxYzbqey+hgRdxy2buOL8qaAsHkJ0qBz4T6/838EOSU5m\nbRkbSJ2ITKTxu0opkqsEr2JhPV1I/KaAFYa5BXu748Vb684NRMQh6e9GyQt8\nj4uYpfpmmY6EJkrGEKwz6rqtKEYWCSiEaA6/vFadzZmV4e2tAsovVtAjnOoB\nnraeEY/ZEnz3WoPC7r/iME32s6cLHC30IfaQg+nRqHNFfHb3Ng1qtBsWyEYK\nNqfuRIjhq3zhv7sjDWEuK4kwym6SU0B8LK2Z3G1dL97IN4ZgkjsqUvvJG69/\nDfnw6KUgXCOx2MtgQw4+rCpwaoMYi65BQUv9me7k4xUfP/tG06W8yYmqYEEQ\nbeJUimJg4qfHTSoDUXIkQ/j1QwaGXH/RwcbyEOFJ82O1F53qpnu/fR/pO6lM\nSnWcFkNeyfyHxTcZP1Bvyp0yhYR3eQlXp0dJTGKnDMh+3+kM8mb1Qw7HQJVu\nft0YUc0nXYXM8XSWf3f9KkQtNjWDE2zxL9Jla5NdXD5YL3lSQvgaK3D9/aA1\nwSA4qk6v1fis3wKl7hhmwgXE4j6+BdZbUGD9PEtZS6PeKtCmRml8o8T3GBIm\n7uz7GwCveC1DaN9Mn1zL/K2cxXL9LbKlCXpwy4lQ+JZWJNeeA2olT5pLMF11\nMG37\r\n=K/kw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHOJdphsFWvrHs2wwiwZaLfWZamAP1+brVfFNL17k4g9AiAvuUimWfZ5lG5Iaf1NK71xgh47nopIHsu1gJniZTlQHg=="}]},"maintainers":[{"email":"bindoon@sina.com","name":"bindoon"},{"email":"chenbinad@gmail.com","name":"chenbin93"},{"email":"chenjun1011@gmail.com","name":"chenjun1011"},{"email":"xiawenwu41@163.com","name":"clarkxia"},{"email":"yudong.myd@alibaba-inc.com","name":"empireo"},{"email":"fenglai0802@163.com","name":"fenglai"},{"email":"jasonintju@gmail.com","name":"jasonintju"},{"email":"470040845@qq.com","name":"lip966"},{"email":"noyobo@gmail.com","name":"noyobo"},{"email":"sobear.me@gmail.com","name":"sobear"},{"email":"tao360907796@gmail.com","name":"tao1991123"},{"email":"temper357@gmail.com","name":"temper357"},{"email":"yuanyan.cao@gmail.com","name":"yuanyan"},{"email":"hi@harryyu.me","name":"yujiangshui"},{"email":"yundong.me@gmail.com","name":"yundong"},{"email":"wssgcg1213@qq.com","name":"zeroling"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/data-binder_0.1.12_1558512714243_0.6046003822830719"},"_hasShrinkwrap":false}},"readme":"---\ntitle: DataBinder\ncategory: Components\nchinese: 数据交互方案\n---\n\nICE 前后端数据绑定、交互方案。\n\n## 介绍和使用方法\n\n### 目标\n\n灵感来源于 Webx，基于一定的**约定**帮你在组件上绑定一些数据和用来更新数据的 API，让你专注于 render 方法中界面显示逻辑，从而屏蔽掉 AJAX、state 管理等开发成本。\n\n如果你希望你的接口更自由，或者你希望自行把数据维护在组件 state 内，则都不推荐使用本方案。\n\n### 15 分钟快速上手教程\n\n15 分钟视频演示快速对比 Data-Binder 与 AJAX 方案对比，详细文档在下面。\n\n[点击这里查看视频](https://cloud.video.taobao.com/play/u/654982961/p/1/e/6/t/1/50636752.mp4)\n\n### 使用方法\n\n**1. 在某个 Class 上面配置当前需要的 DataSource**\n\nDataBinder 采用 decorator（类似 Java 注解）的方式使用，即在 class 上面调用并配置相关信息即可生效。\n\n**DataSource** 是 ICE DataBinder 解决方案中最重要的概念，组件、页面中某一块依赖数据的功能会被作为一个 DataSource 模块，用一个模块 Key 来区分，每一个数据模块可以配置多种数据获取方式以及默认数据等，然后注入到组件中被使用（详细的说明在下面）。比如我们最常见的通过 AJAX 获取、操作数据：\n\n```jsx\n@DataBinder({\n  '模块名 key': {\n    url: 'xxxx.json',\n    method: 'post',\n    // 请求附带的 request 参数，method post 下是 data 参数\n    data: {\n      page: 1\n    },\n    // AJAX 部分的参数完全继承自 axios ，参数请详见：https://github.com/axios/axios\n    // 下面是请求会返回的默认数据\n    defaultBindingData: {\n      // ...字段需要与 xxxx.json 接口返回的字段一一对应\n    }\n  }\n})\nclass ListView extends Component {\n  ...\n}\n```\n\n例如：\n\n```jsx\n@DataBinder({\n  account: {\n    url: '/getAccountInfo.json',\n    type: 'post',\n    data: {\n      uid: '123123'\n    },\n    defaultBindingData: {\n      // 配置接口返回数据的字段的初次默认值\n      userName: '',\n      userAge: 0\n    }\n  }\n})\nclass ListView extends Component {\n  ...\n}\n```\n\n详细的解释下：\n\n* 模块名 key **必填** 用来将数据和接口约束在某一个范围下，通常按照接口数据划分或者按照功能区块。\n* `url, type, data, etc.` **选填** 配置当前模块接口相关信息，基于 [axios](https://github.com/axios/axios) 支持其文档所有参数。该参数可选，部分模块可能无需 AJAX 交互，或者无法写死配置需要通过其他接口来获取。\n* `defaultBindingData` **选填** 该字段配置当前模块数据初始化默认值，如果当前模块有异步接口配置，则模块的字段需要与接口返回的数据字段一一对应。该参数可选，因为有些接口只需要提交成功即可，无需 UI 变化。\n\n**2. 通过 `this.props.bindingData.模块key` 来获取绑定的数据**\n\n对某个 React class 添加 DataBinder 绑定配置之后，DataBinder 会在组件上添加一个 props `bindingData` 用来存放配置的所有数据，模块 key 为你对应的 DataSource key 的前部分，比如：配置 `account` 可以通过 `this.props.bindingData.account` 获取到被绑定的数据，第一次为 `defaultBindingData` 里面配置的数据。\n\n因此你可以在你 render 部分的代码编写如下代码调用：\n\n```jsx\n@DataBinder({...})\nclass ListView extends Component {\n\n  render() {\n    const { account } = this.props.bindingData;\n\n    return (\n      <div>\n        <p>用户名：{account.userName}</p>\n        <p>年龄：{account.userAge}</p>\n      </div>\n    );\n  }\n}\n```\n\n**3. 通过 `this.props.updateBindingData` 来更新模块数据**\n\nDataBinder 除了为组件添加一个 props 之外，还向组件内部注入一个 API 用来更新模块数据：\n\n`this.props.updateBindingData(key, params, callback);` 第一个参数是模块 key ，字符串类型，用来标记更新哪一个 DataSource，需要保留全名（例如：`account`）。第二个参数是 DataSource 的配置，对象类型，调用时它会和默认定义的数据进行一个 merge 操作，并发起 AJAX 请求。通常你只需要传递 `{data: {...}}` 数据即可，`data` 用来描述对接口发请求时附加的参数。第三个参数是 `callback`，是一个函数，当请求结束之后调用，方便你处理额外逻辑。\n\n> 注意：updateBindingData 里面传递的参数，跟顶部配置的初始化参数是一个 deepmerge 的合并操作。\n\n比如一个翻页组件，当页码变化时获取新数据可以这样做：\n\n```jsx\n@DataBinder({\n  accountTable: {\n    url: '/getAccountTableList.json',\n    type: 'post',\n    data: {\n      page: 1,\n      pageSize: 10,\n    },\n    defaultBindingData: {\n      page: 1,\n      pageSize: 10,\n      total: 0,\n      lists: [],\n    },\n  },\n})\nclass ListView extends Component {\n  changePage = (pageNo) => {\n    this.props.updateBindingData('accountTable', {\n      data: {\n        page: pageNo,\n      },\n    });\n  };\n\n  render() {\n    const { accountTable } = this.props.bindingData;\n\n    return (\n      <div>\n        当前 Table 数据：{accountTable.lists}\n        <Pagination\n          current={accountTable.page}\n          pageSize={accountTable.pageSize}\n          total={accountTable.total}\n          onChange={this.changePage}\n        />\n      </div>\n    );\n  }\n}\n```\n\nDataBinder 不会在组件初始化的时候帮你自动请求一次，因为有些 DataSource 不需要默认就请求一次。如果你需要在初始化的异步请求数据，就需要在合适的生命周期中主动调用该方法，比如组件即将渲染的时候拉取数据：\n\n```jsx\n@DataBinder({...})\nclass ListView extends Component {\n  componentDidMount() {\n    // 拉取第一页的数据\n    this.props.updateBindingData('accountTable', {\n      data: {\n        page: 1\n      }\n    });\n  }\n}\n```\n\n**4. 处理 Loading 逻辑和效果**\n\nAJAX 是异步的，为了更好的用户体验，推荐添加一个 Loading 效果组件来给用户请求中的反馈。\n\n每一个 DataSource 模块的数据附带了一个私有属性 `__loading` 来标记当前模块是否正在请求过程中，这样你可以在组件 render 中读取这个数据来判断是否正在加载数据。比如 Table 组件内部封装了一个 Loading 的效果，需要使用 `isLoading` props 进行配置，那么就可以写：\n\n```jsx\nconst { accountTable } = this.props.bindingData;\n\n<Table dataSource={accountTable.lists} isLoading={accountTable.__loading}>\n  ...\n</Table>;\n```\n\n你也可以使用 `Loading` 组件进行 loading 效果的模拟，参照文档可以写出如下代码：\n\n```jsx\nimport DataBinder from '@icedesign/data-binder';\nimport { Loading } from '@icedesign/base';\n\n@DataBinder({\n  account: {\n    // 接口返回数据：{status: 'SUCCESS', data: {foo: 'bar'}}\n    url: '/getdefaultBindingData.json',\n    defaultBindingData: {\n      foo: null,\n    },\n  },\n})\nclass ListView extends Component {\n  componentDidMount() {\n    this.props.updateBindingData('account');\n  }\n\n  refresh = () => {\n    this.props.updateBindingData('account');\n  };\n\n  render() {\n    const { account } = this.props.bindingData;\n\n    return (\n      <div>\n        <Loading\n          state={account.__loading ? 'on' : 'off'}\n          shape=\"fusion-reactor\"\n        >\n          <div>当前 foo 的值为：{account.foo}</div>\n        </Loading>\n        <div style={{ marginTop: 20 }}>\n          <Button onClick={this.refresh}>点击重新请求</Button>\n        </div>\n      </div>\n    );\n  }\n}\n```\n\n效果如图示：\n\n![](//img.alicdn.com/tfs/TB1qLUVPXXXXXXqaXXXXXXXXXXX-706-372.gif)\n\n此外，根模块也有一个 `__loading` 属性（即：`this.props.bindingData.__loading`），用来标记当前注册的所有模块中是否有某个模块在发送 AJAX 请求。这样可以便于进行全局的提示，比如一个 AJAX 请求全局提示标记等。\n\n## 参数配置\n\n### DataBinder decorator 用法\n\n调用方法：\n\n```js\n@DataBinder({\n  模块key: {\n    url: 'xxx.json',\n    //... AJAX axios 配置\n    responseFormatter: (responseHandler, res, originResponse) => {\n      // 做一些数据转换\n      const newRes = {\n        status: res.code !== 0 ? 'SUCCESS' : 'ERROR',\n        message: res.successMsg,\n      };\n      // 回传给处理函数\n      // 不做回传处理会导致数据更新逻辑中断\n      responseHandler(newRes, originResponse);\n    },\n    defaultBindingData: {\n      foo: 'bar',\n    },\n  },\n})\nclass ListView extends React.Component {\n  render() {\n    const key = this.props.bindingData.key;\n\n    return <div>{key.foo}</div>;\n  }\n}\n```\n\n* `dataSouce` 内容为符合 [axios](https://github.com/axios/axios) 的请求参数。\n* `responseFormatter` 用来做老接口数据转换用，老接口如果不按照现有模式需要进行一层数据转换处理。\n* `defaultBindingData` 内容为接口对应字段的默认数据，在 render 中使用 `this.props.bindingData` 获取。\n\n## 接口 API\n\n以下 API 会注入到 Class 中，通过 `this.props.xxxx` 的方式调用。\n\n| API 名                         | 说明                           | 是否有参数 | 参数类型                                        | 参数值 | 备注                                                         |\n| ------------------------------ | ------------------------------ | ---------- | ----------------------------------------------- | ------ | ------------------------------------------------------------ |\n| `this.props.updateBindingData` | 获取更新 DataSource 的数据     | true       | key: string, params: object, callback: function |        | `this.props.updateBindingData('account', {data: {page: 5}})` |\n| `this.props.getDataSource`     | 获取某个 DataSource 的默认配置 | true       | key: string                                     |        |                                                              |\n\n## 后端接口协议\n\n配置的 AJAX 接口需要按照一定的协议规则实现：\n\n**request:**\n\n业务接口自定。\n\n**response:**\n\n```json\n{\n  \"status\": \"SUCCESS\",\n  \"message\":\n    \"接口请求完成的提示，可有可无，status 为非 SUCCESS 时会显示报错的 UI\",\n  \"data\": {\n    \"foo\":\n      \"data 是具体的数据，需要与该接口定义的 defaultBindingData 字段结构保持一致\"\n  }\n}\n```\n\n## 自定义 requestClient\n\n如果你的项目 ajax 模块进行了统一配置和通用处理的封装，或者使用 ws 或者其它的 RPC 手段进行网络通信，DataBinder 允许对请求客户端进行自定义。\n在 DataBinder 传递第二个参数对象，并指定 requestClient 为一个返回 promise 的请求函数。该 Promise resolve 的值为 response 对象，该 response 对象必须包含一个 data 字段，值为返回的数据。\n\n**DEMO**\n\n```jsx\nimport jsonp from 'jsonp';\n\n/**\n * 自定义的 json request client\n */\nfunction request(opts) {\n  return new Promise((resolve, reject) => {\n    jsonp(opts.url, { name: 'callback' }, (err, data) => {\n      if (err) {\n        reject(err);\n      } else {\n        resolve({ data });\n      }\n    })\n  });\n}\n\n@DataBinder({\n  account: {\n    // 这里的所有字段会作为参数传递给 requestClient\n    url: 'https://ice.alicdn.com/assets/mock/53141.jsonp.js',\n  }\n}, { requestClient: request })\nexport default class extends React.Component {\n  // ...\n}\n```\n\n\n## 常见需求\n\n#### 发送数组类型数据，key 自动加了 `[]` 怎么办？\n\n当你传输的 data 中有个 key 数据（例如：items）为数组格式时，提交给后端 key 会自动添加 `[]`（例如：items[]=xxx、items[]=yyy）。如果你不需要这种功能，希望使用原本的 key 进行提交，可以添加下面配置解决：\n\n```js\n{\n  serializeArray: false;\n}\n```\n\n#### 接口是老版本接口，不符合 DataBinder 接口协议如何处理？\n\n配置 DataSource 时，添加 `responseFormatter` 配置进行数据处理，然后返回符合规范的数据。\n\n#### 自定义请求成功、失败的提示和逻辑\n\n在 DataSource 配置部分自定义 success、error callback 实现，以 success 为例：\n\n```js\n@DataBinder({\n  key: {\n    url: 'xxx.json',\n    success: (res, defaultCallback, originResponse) => {\n      console.log('请求成功了，返回的数据为', res)\n      // 执行默认的逻辑请求成功逻辑\n      // 通常为弹出反馈 Toast\n      defaultCallback();\n      // originResponse 内容请参见：https://github.com/axios/axios#response-schema\n    },\n    defaultBindingData: {\n      foo: 'bar'\n    }\n  }\n})\nclass ...\n```\n\nerror callback 的参数和逻辑同 success。\n\n\n","maintainers":[{"email":"rax-public@alibaba-inc.com","name":"rax-publisher"},{"email":"luhengchang228@126.com","name":"luhengchang228"},{"email":"chenjun1011@gmail.com","name":"chenjun1011"},{"email":"yuanyan.cao@gmail.com","name":"yuanyan"},{"email":"wssgcg1213@qq.com","name":"zeroling"},{"email":"temper357@gmail.com","name":"temper357"},{"email":"sobear.me@gmail.com","name":"sobear"},{"email":"bindoon@sina.com","name":"bindoon"},{"email":"xiawenwu41@gmail.com","name":"clarkxia"},{"email":"alvin.hui@qq.com","name":"alvinhui"},{"email":"njuzhaoguoyan@foxmail.com","name":"aboutblank"}],"time":{"modified":"2022-04-05T19:07:31.153Z","created":"2017-12-26T06:49:09.722Z","0.1.0":"2017-12-26T06:49:09.722Z","0.1.1":"2017-12-26T11:43:32.639Z","0.1.2":"2018-05-24T02:36:54.265Z","0.1.3":"2018-05-28T07:36:37.746Z","0.1.4":"2018-05-28T08:57:39.570Z","0.1.5":"2018-07-25T13:57:49.956Z","0.1.6-0":"2018-07-31T05:28:53.284Z","0.1.6":"2018-08-02T05:24:42.528Z","0.1.7":"2018-09-12T08:39:29.598Z","0.1.8":"2018-09-17T03:24:03.522Z","0.1.9":"2018-11-21T10:24:33.682Z","0.1.11":"2019-01-07T12:51:10.341Z","1.0.0":"2019-01-09T08:50:13.570Z","1.0.1":"2019-02-25T07:09:33.567Z","1.0.2":"2019-02-25T07:17:23.097Z","1.0.3":"2019-03-04T05:26:39.415Z","1.0.4":"2019-03-04T08:51:30.358Z","1.0.5-0":"2019-04-29T08:55:18.375Z","1.0.5":"2019-05-09T02:55:01.029Z","0.1.12":"2019-05-22T08:11:54.362Z"},"keywords":["ice","ice-component"],"repository":{"type":"git","url":"https://github.com/ice-lab/react-materials/tree/stable/components-0.x/components/data-binder"},"license":"MIT","readmeFilename":"README.md","users":{"becarchal":true,"panlw":true},"homepage":"https://unpkg.com/@icedesign/data-binder@0.1.12/build/index.html"}