<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>duxapp Blog</title>
        <link>https://duxapp.com/blog</link>
        <description>duxapp Blog</description>
        <lastBuildDate>Tue, 12 Aug 2025 00:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>zh-cn</language>
        <item>
            <title><![CDATA[基于跨平台的svg组件编写一个svg编辑器]]></title>
            <link>https://duxapp.com/blog/svg-editor</link>
            <guid>https://duxapp.com/blog/svg-editor</guid>
            <pubDate>Tue, 12 Aug 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[duxapp中开发了跨平台的svg组件，现在基于这个组件库开发了一个简单的svg编辑工具，支持插入图片，绘制，插入文本，矩形、圆形等功能]]></description>
            <content:encoded><![CDATA[<p>duxapp 提供了一套跨平台的 SVG 编辑器组件，支持在多种环境中创建和编辑 SVG 图形。该编辑器包含以下核心功能：</p>
<ul>
<li>插入图片</li>
<li>绘制自由路径</li>
<li>添加文本</li>
<li>创建基本形状（矩形、圆形、线条等）</li>
<li>对元素进行移动、缩放和旋转操作</li>
</ul>
<p><img decoding="async" loading="lazy" alt="效果图" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAWwAAAJbCAMAAAD31l4DAAACFlBMVEX////2+PvRKx35+fnp7T3l5eVBAPkzNEfolY75+88tLS3wurb9/f75+frZUEXw8PD++Pj0zMnq6urdYVfZUUbm5ubbXFHomJHRLSDSLyLyxcH43Nrv827vs67mjof7/Nz//v3nj4j3+bzgc2r/+/v10M3XSj7r8FHxv7vusKveZ17TNSj32tjVPTD99fTs8Fc9PlH2+KvYTEH54d/32NXcX1XaVkv095vt8WL++vnKytDXRjrUOCvt8V3vtrHy9Yr88O/77OvSMiXtrKbgcWjy8vLfbmXr70z21NHpmpPq7kf5+8vqn5nhd2/famH88/LxvLhiY3L76Ofzx8PR0dX//PyamqTwuLTro5339/fw83n65ePjgHjV1dnsqKLmioL8/eT4393WQjbNzdLywb32+LLZU0j7+/u/v8Xt8VvdZFr8/N/zycXw9H3bWU7v8nP+9vbm5+nnkovjfHT09PTd3eC9vcPkg3vDxMh5eofieXFGAPenm/L9/uyfn6lbW2nu8mjY2Nv6/NXlhn9wcX5QUWJERlfr6+3n5fB9fory9Ibu7/Dzy8f4+sPs71P+/vPh4eO4ucCSk5nz9pP3+beGhpJ1doBsbXtVD/ZOAPZdLPVlPfTAuPHq6fDa1/BVVVWnqLCvr7f196aNjZNFRUWjpKbr70qTgfKSf/KwpfGdjvHTz/DPy/A0NDT5+seys7q1tr3296/8XrldAAAauElEQVR42uzVvUoDQRSG4eOIsCDYKKQIKQ2LkE5yA4FgEYPY2AkbUnv/pVkRtlg+2V1/mG98nzuYdw7nxBl+28X5J2L3ENsZsTViOyO2RmxnxNaI7awXO/CjiK0R2xmxNWI7I7ZGbGfE1ojtjNgasZ0RWyO2M2JrxHZGbI3YzoitEdsZsTViOyO2RmxnxNaI7YzYGrGdEVsjtjNia8R2RmyN2M6IrRHbGbE1YjsjtkZsZ8TWiO2M2BqxnRFbI7YzYmvEdkZsjdjOiK0R2xmxNWI7I7ZGbGfE1ojtjNgasZ1lG3v+EsXJNfbs+moWpck09uUqpdU8CpNp7CqdvEZhco5dRWEyjX1D7D/zlFr3UZg8Y1fpZBulyTh2cVuE2F/6r7GbOux9J3ZTD9PEWOte7N1+vQt3U2J37x9mP7Z2nVoP0akPKR2aMDc99vGQhtoex3V6TCd30Wk+Rn0T5qbHXqTh1rKT/sYqOptUxMWcHvt5mYarRp/H5W103lJrEebeybuj17SBOIDjP35PB0KZtPhgcVDEMp3ZQ9TBsIiZIhZcW/RhgmJZER+kSKkPgq993R897xJ7umlzl+TS3O37tEFS6Mefl5imaXBsSJVEupTC5rRL4E2RVuqD5oXAhoJISylsTrsz2BVDBlv9eXbuUhab/HV4rLSRttJ+sNVj95ey2As+xjvWc/2t5bHVf/RGWv/VOo+sAuhf8rArSINtnvUYDCh52C22aIDXwLMegQElD3tv+0HGIOsEYjPe4u5/cGmGdQzYa0lspHm6j0g7NcQ6Buw69UqDaKPd42ONWafBkFRi8+Gsg3BF3FTbHezfYEoqsflwroOtOjUX3phUY/9G2qPkqlPc29eYVGOfSg5nGmkjsX3lG6Wjb5QU7LTscBIOnI7+Jwa55Wn0LdMJwWZ2Gdl3AmEzyP6JRYiudB1VdJpLBPZoLjmcI6QNAEbjOdJ+VCC6iqim+igB2KOxayfJkWF7sjJRWkPlAdVUTAD2GGVXEe/i99YasxBpk0zk4aaH7PtjF+TBLnFTq7BCtzxEXDby8plMfpKANXuOtLbsy/OwmiNr0a5A4qtks5UEnI0UXOuK9E0M6NbOamCdkA81/RKbTimwEvJ0GOvEYL8gbSr3XuB1zLNWg83hFiATwW0LE62VYfdLfLDlV5HOVPs7VmPE7t+7aHI7oddXI6kjx+533e6DoOUQ0YzbVZVgc90t8o0bsj4F+MBpxI3YirAbN3vhbjcgl73dz9BVJDQ2waPNJM26plurxCYQaBUpGWutAHu2bQJSOba7u7nWYbGdDgWyZrzS3TZJtSGy7sDcQmE71Quk5e945xCsqo20OfAcp3o4XZ8gEAq70UHWBMI3QdrZ+atzNndx0TlSFrQsFDZB1vwcwtdAGnGc8mAwyD0/d2w8nu2AjkWAfRKBteOskNahyraNfun5aLQIsIk/ZflodI4bjcbzs40SWSnQsVDYbfaNT3ytSft4b82xdXK4U00vnoTBLiOt7beKPBKUzrKsWq1Nfh5O12fQhcFuC52KnJ9IMtuUmZByGUwrBPY50mp+JhMhYtzWJo34mJ3z4MWLTaiN7QtTZpD2sTKZTKfTWeG7XMv+mQ9eOl5sQZtnSto4VpnN8U/clncgvlYYvBMnTuy86CBSUvHrWddNiKtfJxiiVHzYzQLSGhBJ+Z27c1IQV0MMkdWIDzt1xnwgmpCWWyDtBeKqbDG1yyAtLiA+bOLC/NrUhLA1kQZlNttnU4irj5RtnAtSGWLHPvuxqVf5tybIlPLeJQRZFYgrylaFt0vAeTZB3o9/a0mA8xOboff1mmBkobCPx0Y+JfdsuSFAdV5HWs/Em89UYPPWwtPNn+BcdLXXAxO5A2MP615vaa/Xxab48ZFVRPS4zVtLAmNXi16z+l9d4U6zO9Fnk9fBbYZew9HIMG8xbAF13noP/OVW8pEk1Vr99Y0xvAWTksMW1GfgEqO99I6PXsVanU+3SdxRY3PwM2+6ifjxkXOfodfSpOFWg82811eC2LdI298584BeBmmrw4bujSD2J9z0APu1Xrkn/b4h3gqxoXfFsQNcGG/Z6LZc5szQVoXNR5uIHR97B/a3t8P91YA/eKAYG4gYNtK6cEC7ZRv1ix8JwP6CNDhY19MefwEDSgA2Pz4e0n5AVssEbfWPwCDhtupZnrae91LGhu0gbRJuq+7kElnjqvbDrRKbUCMr9FbdOm6HW/PpVo5NhO7dICCivVqB1r07tsha0z2x0E3v0VaJvRLB/ii01kw8bb1HWxE2n9khvNnTwv346BcxYbR9sJUfH6e46XsB/OpZlqX9aKvDfnoRWUXYRiXwrTAcDpHWfAJtU4c9RQHsJl9q/PuOm15yH0DX1GETpF0LbHQl96CdhrbairGvCgKrCAGxrtFtCpqmEFvA8VZmFYGCpfn11vfFvueriJg2W7bvbzVdSJRgc0giMNg9ENcuIdP+H3933f9HAj3/1+MzSHSt9UKiDPuCQQq9HhIVPruj/Q107A97986aPBQGcPwQQQJvykkQTOIgBjJIBbcMgQ42kEGQWirhxcklIIhDKW66dXHoB7De1l4/5JuktU8SMXd9c6j/VVvbXx6OJ+klR8Muh0PScQcbTtv/NJsEeh8BG6ZWDH4KrOrRazcop8GgTp72EbBhAkcRBruDYsV1rqivyuS9Sx4NO3xqq8ne6ridtoRIKwV2SkkWTudjaje+R1tGh5LzuRFPgZ1cEg6HhhLEaVTwXUKa9WqTTZrnEBKBTYNkZoMN8QJlJRz6YLZsjX01aSYbtVxh0yggKfFgGyp3qWla4ybgxdMkRe2eFGw18WCzpsRy7XabC3jx06QY+cCWQrBVCfbh8VIVilJqyOq/Y1O9XGDLYXNLJx5sOvy75MXkxbEW2rnAfnC+loCDAU+IWS3CBp7jkycKkRNHuVizDcqODzsYfGzpmlp5AOxUpT9QXD52I3TI3NYoEIsObci9nnK+xBpnLwKDTcdw/oYm/A4UJ8eGwY5MPR4rDvQZOyY2bEXiQZ+xk2JH9XoqlSh/Cm1F6O3BM8B+op2eMsIGaUHYkx6Pa3aIzNJjj4SvSjTNZYXNcSO/tKL0erLx5cwUJthqUmAQUaXG5ncoNjjPO1RCImyAts8s/NCGA+3Uxz/1EUmlxh6DiQ2u8TwX9j/MA44FNxqJohe6UlFV1bVyMDrGs9W0WJyuZhjrJA13auyaQjmBt1ii7MboQDxlJ+9D8yNNFHzS7I8zWK8Xxe8Wa6K0U2MjVpJ83o6XBEa+ROdhH7R9ido30krlnt3/JDqeFV3NsI6IKT02UtWKZBdxK9ym7FS39KUl7UCDtGmyIO2qj9dFT2uC1u0U2JCh2pke8F7g26Pkkm5ovrVDMpusYSAIYjBeeLEXGBOzkGSCDeTdHbdkRNiLcNzNVcMDXS6b3XvVQIe6gEUEFpILREjZYEOsWQ3Zi2i7h7mbhk/aNJtNAwU1wSs/9gpPECFljY1ktl616gUv2axNLbih6/VWU5ZRSBhP/dhTjBEhZYgN3FZy4GBX21cN0SUN0KHYxb1+NXZgHUdX0wC6fHvddaDP2FlHU56qt92uiqDzMnIs7PKf67i/Za3jpR97Sc5pzamxGy7qloriVsDvfux3XECEdGLszo56ANRxYvD82Wv9PP+VJzUxVpHBXdK/0ujjNy/22287XY9e9862/ttFSWP0zYvb+mVD0GW/E2FD9lyzKHlDfT57/llDZnN9iIjp5NiPj48VhFJpb7avS/uHB8vX7YYk69Njt1otFqWK6eP59uPz82M7x31y1pBQ7HzGDPs6ttL7Q6KsicS2uBkGY4Yhi5pU7H/s1zFqw0AQheEp1oWLYDC4EyxMoyNsGpFSRW6gGyyLjiDQBVIlF8kNowjZkjzRrINIzMrv78eP/TAGd6XzJx3YtwVsYEcDNrD1gA3saMC+I/ZxZYfDcWUUbyvYu5WdTruVUbztYD/dtQfDpt+0iX1gawE73X1gawE73X1gawE73X1gawE73X1gawE73X1gawE73X1gawE73X1gawE73f1UsZ2rGNj/89iqLI13wF772MDsRBxoGpvvynB1KM+6gL302OCq1vtS5NsZmjN9LzSJWy/PuipmYO9+os5Ks5APNFabvowm+cVLzwzs63hCLdvTWCaxWTktCgb2PC6M1mcUW+NmYAtrJdax9yaiDezbretGx27qmDawLxVTGJmzpGOTrWtxNfvQAOyhtxHF8ausoRg2WSvP2FXm3Duwh54HEe9GV5HEjtbYi3YegD3/YktqHTue/TBDe2D31YNHRbQWW+bOvyPA7stNn7d/gd1405cD+4u9O0ZtHAjDMDzF38wdDAPbqDSurE7lgo+gahoVxgSdQGBcCmQV8glcuAzsDTcZK/piz1qOtTMhCd9bCo+EHoyQmvldci5T4bHxcyH2a5teY6nG2jRN8y/s5tio0RZybkPslzS+Em/X5GmaZvYa22Zp4g57eafXxPY1kP92mNtLbJvLax2xQ2JbkV4b2IO1JJbYAbG1DNrAdtYuTeyA2JVA+w0b1lIROyC26qCd9NiwLvnMDopdlXJVAusdsUNgo52nLbAmdlhsaPvWxA6LDW3fmthhsaHtWxM7IDbSpWetFbHjYEMb1sQOjI30TATNtCJ2HGxow5rYcbChDWtiR8SGtrMmdkRsaDtrYkfDRnpZ10utiB0TG1mrFLEjYyNiE5vYxCb2F8O2vx5NE3sits7mj1YeK2JPwi5lQkdiT8GuZErzitgTsLVMShN7ArZNZEqW2BOw1VImtOUzexK27bbJo+XPxH4IGz0vHs3yPZtfkMS+E7GJTewfjF1VxP4k7Oq56wpD7M/ANt1aRHJD7PjYJhdXbogdFRvWTpvYsbBhDW1ix8KGNbSJHQ/bPMlFT4bYsbBhDW1ix8HewBraG2KHxoa1r03s0Niw9rWJHRob1r42sQNh+9a/Pe2W2EGxYb2d9eZbeetI7JDYLaxNjz0z0G6JHRBbwxo76Zgtd9KJgW1OgzWwoW2IHRBbZYM1sAftOZ/ZQbFNOT/NS6MusN3h+Xx7UCM1xFbI9BqFGu3QOVNg94cPB/OhnW8NsV8T6EXYi7XjXqzqXSdxpW0MbJuK60RsV41vk9DYOHlO7MuXaG1DY7dG+g7Exku0q7ZtCGxQL1I5t+eAib5aBu2FNl7W3saGq5921OcOxO4ze0GpV13be9h2kfoJ2nMo0FCxl9Hqdhy7rWW0fUFsT3vq1LzmnjVniz2g3YxjH+9Yc2retfYYdzF9at5qXXAepKddJIncKFE+dq6QSW5TZ4aTTtE77jR5aXVdcvnfrDFpBUvXWIZ1yTrNdpzhe+tmi5ey64pLsN0KTxYcxDKsK3acTv2/N5slslqlnLv+OTf7J80yRewvfLOK2B/qR1yf2GMR+/ten9hjEfv7Xp/YYxH7L/v1buMwDARheAEDG60xkUraIliBGnBGFsAS9E79LPIucHDSgVawAQFrvxL+YIAhOxFpGhGhPR7bStqg+KWh3cvtsY0kIC/P1+u5ZISd2h7bptV5uQ2ROQ63ZdaWPvHYxtY59fzWp/y5tse2EJ2v/Md1VqEyj20RcOeVOwKVeWwDQe55pc8QKvLYBic8eOOBExV5bAPFwBsDlIq+JrZUAETeiACVfE/sGgD+5wCxmyoOGruOg85IHReMvDHiQiUe2+KMxBsJZyrx2BYCdLzS4QCnppKAiVemI9z1WhRpPSJKZR7bRhRTx2/dBBUq89j22khjZI5jwk5rj/3DLt2sJgxEYRg+HLeCKSl2RBQXthAHXdQfkIrYzKaC1hAQIxFDXZdQitALyI03ihOCZALBTSLnWX0wu/fMzbaVyBZSUezblUvHSuhYKkM6il1cFFuNYhcZxVaj2EVGsdUodpFRbDWKXWQUW41iFxnFVqPYKmvIvxzG3o36ELOqf8jZ2nRcRWrv8Kx40fXc3CGHsXVWB7chnMXTr7esTkKyY8+vHfqKC6Gf3LTNWBtyIoexh1iHPufcDNUYdvW/b/mzXR9HPUhid5mRHBuRYqfHXjsLRxgBLgf2bNUbg6xtv7IAkrQs7M4odjaWEC/YFO/aj6ZpFjZbV00f0BxAjKNfVBEf5XYAvsTFHnEvtw1Z3XfsIecMOZ8aJzv8NM7GILU97ECMV5MQmZweQINLiNHcQFb3HVvM528YzKeTExPNydkMIs4/e/bTmjgQxnH84XcSCkvExSZblBEn0pomB5sWgoMksRQLtikRWaGiNPQkRYIeCvsa+qJ34t+4y8J6atb1c5gxc/wefMgEWoe2rvL5fBHj/MocBbk+E9n3SwYSqweb9nTgsWPLukbHCruJOaaLfeDQxgQY0hbjnLdwzZecBp7kxoi4taCrVWCOvLXAaU8HHns1IJlM47rfMbYSMW2EPuCHtMOKNJ0W3tQoprQH6ICNO8qEbMZmjC5zjeE5KmFPsmjjAu8/kKNd96jSQhX3lPbhT2JAqfonlAWZjF26zdcjQ623Uema0hmtsSk6HYiAdoTwOyS9+AgpxW1A5wB/McxnyoAMxi7C9L9pxkz3nlDpzWYNXNLaiXbDeR0j2sHG+OIRORO8s/TxXB07SWw2QF2hz5e12GF74qPWtvAl6NM5KkoQ3G1jK42k8ysil3a41+qjQqeaTJ7SNWre8qXGKmg/HPp0WYt9Y2pAL+a4IUpiy7W6jT1Sm65MPlXLtOsl8scfAh+MtgYCPbaMTS81f/j5tbMW++HhZIoz4hC5XFvGfi2XzU3sFxOtJOcHhE472DcYEe6d1IlsfeHQKjbTTWMe0N4OO7bnKdeL2KoQdRk7J4S6ju1OUY9Jct5RtCgtOYIIaSMYmui2S6XSBXCRbCXDKFzRvg47trSMHb29XcrYz/l8YRVbudUMe33Hp805pfTbJqAWbFrxiga6gZkAFtvZq9CaAe3pP4n9lfO+jM04v13GdsY+Tvjmjs+oMNp4rpq4K0Vac+CsJ6nRCui0XC6PgXFZ8py36L1Pe/pPYv86IL2qQFuhFWUEcerQUnBR88UgjO0HmHd5RhJ77cVEruQBXrL3ybE92tfBx14OSH84HBbxRa4iiW0XfXQt2rBmEA9JPKZXGhHu9ED+DEfCbz4+OUSkOL/fZzPa14HHvpzNfHjEFxejGjS5QsZ2a6rZCijF7cK4Zv3RpClw0w77lLA6FdOPpm3n+PHgb9hC4LFPHE19LRmQfF7UY9oRPDUHxG41MTy/smiFefZ9TS3wY+y/YbVavWciVjpna62cRxRe9ekXyqVLlB/YoUMpzD0bfWOp5+7pp/99ZDU2i2NOUqxs+7t9+iMn+D1loFCK61JWZC32QTvG/rNj7H/ZMfZPduiABgAAAGFQ/9YmeAA3iECT/Ux2k/1MdpP9THaT/Ux2k/1MdpP9THaT/Ux2k/1MdpP9THaT/Ux2kz127tgGYSAIoqh1kSUkIjJXQIyoBskBZVA9DdyyyelgzfslvGiiqRzsONiV+xXs7TS9bUk7KPZ+md6+pB0Ue23TW5c02LBhw4YNG3Yn2LBhw4YNG3Yn2LBhw4YNG3Yn2LBhw4YNG3Yn2LBhw4bd696yYI/q0dJgj+ra0mDDLoh9a2mwh/VsWbCH9WpZsO1s2LBhw/4UbNiwYcOGDbsTbNiwYcOGDbsTbNiwYcOG/WXs/Ty9/33S8RG1CHbVYMfBrhzsONiVgx0Hu3Kw42BXDnYc7MrBjoNdOdhxsCsHOw525WDHwa4c7DjYlYMdB7tysONgVw52HOw3e3ZwwjAQBEFQAejyT9cRjPBDNjRUhdDsa6dM7E3sMrE3scvE3sQuE3sTu0zsTewysTexy8TexC4TexO7TOxN7DKxN7HLxN7ELhN7E7tM7E3sMrE3scvE3sQuE3sTu2zE5hfE/o7YZWJvYpeJvYldJvYmdpnYm9hlYm9/iH3ui5fc5zn2uXjReYztrl91+2c/Mx5Uib2J/WnnblrUBuI4jv9DWX4wKIVC38ecvecFCEHwkFMOehWMxEtCwCRILmlA96iLeiztS+yObdok3RktzSYR5nPx4uk75GFmmDwyHVtOx35kOracjv3IdGw5HfuR/U/spfOZ2jOzR2X2jJQS27MTup+TTz5RXX9iuzHgy9M4ZYo0yeLKXVxJ+zzFqIqfSGr6EkAIXqZ0nxyvHKrqUewtXq2kA1EVu7IhQ5XsfztsJmUb7EjGjbA5OgvnuEHk0j1CCBFV9Sb2YjDcAAjoTc/wV2U+nmWXwPyLsMPu+juXXQJjLKlsiTFJOOBz+mnO4dAdvuFqSRV9iW3zk6gti81F20G5PiclCxYpjTGksqE0dsKDlAppwBO6bQSB10a6J7FtDoja3JbEXpMbYDejwrq92Hu4ldvUnm6bQ7hQVT9ii9ZAPhhmJI39jACrDmIv4FOZjwXd4gHbOHihml7EFq2FCZE8dhT7OHYQ24dJZSb8O1qP6A19iF205qEq9hHgC6LUm2y2E6u92NuIqqJtT1qrY99srYpN9ioRj/lfWos93tbrj3vSWh37VmtlbOHDHvH3bJB6J6CvsVWtu46tbl3gYzslognWZvGK0NPbiLJ1h7Hvb00cQHwMEcz6/IDM5pm6dbexs6K1TUo8eMljAHaPX/0GOQB1625j7yut1ffs6QSbPk9qPER+gJxUuoxtKlvXp+tkmx1N1z9S4aN8ur6FRQnGpNRh7JWidX0hal7m4/ne2E0sRMW/F6JiOCSxg0cuNqTSZewdXkUh3eRyVHGXlEKEVGhoiTW5scRqAWuO76TSZewxsJ7PGt9XEUwqNLJ5EEGIlJsH3zi4Tyqdxs6sD9SVofUvwzdILM9KBqQ0zab0z/SG72PQseV07EemY8vp2I/s7dimji20E/ukYwvtxGahji20EDskdtCxhRZiH4ixXMemNmLnjBhjno7dQmyPXWOzTJ/wlWjuhG/GfsU+p/rserOG9djpuYjNDkv9VYaaZr/KsDyw37FZsDS05hWxlwErYguH1NDeyVN6YJXY7JwZ2vuwz6wSW/AM7T14rEDsj9zQmpezauzCITS0ZoUHVo5dcTINrTnmiZURq7lMDa0Z0wurotVXVvX1ot8Cm5Be/ipL09GZ1e0dQ/s/zp7VnUc/AMRrzi5g774kAAAAAElFTkSuQmCC" width="364" height="603" class="img_ev3q"></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="快速开始">快速开始<a class="hash-link" aria-label="快速开始的直接链接" title="快速开始的直接链接" href="https://duxapp.com/blog/svg-editor#%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B">​</a></h2>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token keyword module" style="color:#c5a5c5">import</span><span class="token plain"> </span><span class="token imports punctuation" style="color:#657b83">{</span><span class="token imports"> chooseMedia </span><span class="token imports punctuation" style="color:#657b83">}</span><span class="token plain"> </span><span class="token keyword module" style="color:#c5a5c5">from</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'@/duxapp/utils/net/util'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token keyword module" style="color:#c5a5c5">import</span><span class="token plain"> </span><span class="token imports punctuation" style="color:#657b83">{</span><span class="token imports"> </span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token imports">  </span><span class="token imports maybe-class-name">Header</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token imports">  </span><span class="token imports maybe-class-name">TopView</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token imports">  </span><span class="token imports maybe-class-name">Column</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token imports">  </span><span class="token imports maybe-class-name">SvgEditor</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token imports">  </span><span class="token imports maybe-class-name">SvgEditorController</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token imports">  useSvgEditorController</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token imports">  px </span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token imports"></span><span class="token imports punctuation" style="color:#657b83">}</span><span class="token plain"> </span><span class="token keyword module" style="color:#c5a5c5">from</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'@/duxui'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token keyword module" style="color:#c5a5c5">export</span><span class="token plain"> </span><span class="token keyword module" style="color:#c5a5c5">default</span><span class="token plain"> </span><span class="token keyword" style="color:#c5a5c5">function</span><span class="token plain"> </span><span class="token function maybe-class-name" style="color:#79b6f2">SvgEditorExample</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token comment" style="color:#93a1a1">// 获取编辑器控制器</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> context </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token function" style="color:#79b6f2">useSvgEditorController</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#c5a5c5">return</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">TopView</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Header</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">title</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">SVG编辑器</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag punctuation" style="color:#657b83">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Column</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">grow</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">m-3 bg-white</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token punctuation" style="color:#657b83">{</span><span class="token comment" style="color:#93a1a1">/* 编辑器画布 */</span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">SvgEditor</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">          </span><span class="token tag attr-name" style="color:#c5a5c5">width</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">100%</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">          </span><span class="token tag attr-name" style="color:#c5a5c5">height</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">100%</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">          </span><span class="token tag spread punctuation" style="color:#657b83">{</span><span class="token tag spread operator" style="color:#fc929e">...</span><span class="token tag spread" style="color:#fc929e">context</span><span class="token tag spread punctuation" style="color:#657b83">.</span><span class="token tag spread property-access" style="color:#fc929e">editor</span><span class="token tag spread punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">        </span><span class="token tag punctuation" style="color:#657b83">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Column</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token punctuation" style="color:#657b83">{</span><span class="token comment" style="color:#93a1a1">/* 编辑器控制面板 */</span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">SvgEditorController</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">        </span><span class="token tag spread punctuation" style="color:#657b83">{</span><span class="token tag spread operator" style="color:#fc929e">...</span><span class="token tag spread" style="color:#fc929e">context</span><span class="token tag spread punctuation" style="color:#657b83">.</span><span class="token tag spread property-access" style="color:#fc929e">controller</span><span class="token tag spread punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">        </span><span class="token tag attr-name" style="color:#c5a5c5">selectImage</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e">selectImage</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">        </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">m-3 bg-white r-1</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">        </span><span class="token tag attr-name" style="color:#c5a5c5">style</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript literal-property property" style="color:#2aa198">height</span><span class="token tag script language-javascript operator" style="color:#fc929e">:</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript function" style="color:#79b6f2">px</span><span class="token tag script language-javascript punctuation" style="color:#657b83">(</span><span class="token tag script language-javascript number" style="color:#5a9bcf">100</span><span class="token tag script language-javascript punctuation" style="color:#657b83">)</span><span class="token tag script language-javascript punctuation" style="color:#657b83">,</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript literal-property property" style="color:#2aa198">marginTop</span><span class="token tag script language-javascript operator" style="color:#fc929e">:</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript number" style="color:#5a9bcf">0</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">      </span><span class="token tag punctuation" style="color:#657b83">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">TopView</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token comment" style="color:#93a1a1">// 选择图片的回调函数</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> </span><span class="token function-variable function" style="color:#79b6f2">selectImage</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token keyword" style="color:#c5a5c5">async</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#fc929e">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> res </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token keyword control-flow" style="color:#c5a5c5">await</span><span class="token plain"> </span><span class="token function" style="color:#79b6f2">chooseMedia</span><span class="token punctuation" style="color:#657b83">(</span><span class="token string" style="color:#8dc891">'image'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"> </span><span class="token literal-property property" style="color:#2aa198">count</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token number" style="color:#5a9bcf">1</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#c5a5c5">return</span><span class="token plain"> res</span><span class="token punctuation" style="color:#657b83">[</span><span class="token number" style="color:#5a9bcf">0</span><span class="token punctuation" style="color:#657b83">]</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">path</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="核心组件说明">核心组件说明<a class="hash-link" aria-label="核心组件说明的直接链接" title="核心组件说明的直接链接" href="https://duxapp.com/blog/svg-editor#%E6%A0%B8%E5%BF%83%E7%BB%84%E4%BB%B6%E8%AF%B4%E6%98%8E">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="svgeditor-组件">SvgEditor 组件<a class="hash-link" aria-label="SvgEditor 组件的直接链接" title="SvgEditor 组件的直接链接" href="https://duxapp.com/blog/svg-editor#svgeditor-%E7%BB%84%E4%BB%B6">​</a></h3>
<p>编辑器主画布，接收以下主要属性：</p>
<ul>
<li>
<p>defaultValue: 初始SVG内容</p>
</li>
<li>
<p>onChange: 内容变更回调</p>
</li>
<li>
<p>mode: 当前编辑模式（path/text/ellipse/line/rect）</p>
</li>
<li>
<p>各形状的样式属性（pathProps/textProps等）</p>
</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="svgeditorcontroller-组件">SvgEditorController 组件<a class="hash-link" aria-label="SvgEditorController 组件的直接链接" title="SvgEditorController 组件的直接链接" href="https://duxapp.com/blog/svg-editor#svgeditorcontroller-%E7%BB%84%E4%BB%B6">​</a></h3>
<p>提供可视化操作界面，主要属性：</p>
<ul>
<li>
<p>selectImage: 图片选择回调函数</p>
</li>
<li>
<p>继承自Column组件的布局属性</p>
</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="usesvgeditorcontroller-hook">useSvgEditorController Hook<a class="hash-link" aria-label="useSvgEditorController Hook的直接链接" title="useSvgEditorController Hook的直接链接" href="https://duxapp.com/blog/svg-editor#usesvgeditorcontroller-hook">​</a></h3>
<p>用于获取编辑器状态和控制方法：</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"> editor</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> controller </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token function" style="color:#79b6f2">useSvgEditorController</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>返回的两个属性分别用于绑定 SvgEditor 组件 和 SvgEditorController 组件</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="最后">最后<a class="hash-link" aria-label="最后的直接链接" title="最后的直接链接" href="https://duxapp.com/blog/svg-editor#%E6%9C%80%E5%90%8E">​</a></h2>
<p>编写这个组件主要目的是为了检验跨平台的<a href="https://duxapp.com/docs/duxui/svg/" target="_blank" rel="noopener noreferrer">Svg</a>组件的功能完整性，同时将<a href="https://duxapp.com/docs/duxui/senior/SvgEditor" target="_blank" rel="noopener noreferrer">源码</a>开放，供大家使用或者学习参考</p>
<p><a href="https://duxapp.com/" target="_blank" rel="noopener noreferrer">开发文档</a><br>
<a href="https://github.com/duxapp" target="_blank" rel="noopener noreferrer">GitHub</a></p>]]></content:encoded>
            <category>duxapp</category>
            <category>svg</category>
            <category>编辑器</category>
        </item>
        <item>
            <title><![CDATA[duxapp中主题系统是如何实现动态切换的]]></title>
            <link>https://duxapp.com/blog/theme</link>
            <guid>https://duxapp.com/blog/theme</guid>
            <pubDate>Tue, 05 Aug 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[在旧版本的duxapp，支持主题功能，但是那时候的主体是静态配置的，并不支持动态切换，新版本，在旧的静态主题基础上扩展，实现了动态主题切换]]></description>
            <content:encoded><![CDATA[<p>在旧版本的duxapp，支持主题功能，但是那时候的主体是静态配置的，并不支持动态切换，新版本，在旧的静态主题基础上扩展，实现了动态主题切换</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="旧版本静态主题">旧版本静态主题<a class="hash-link" aria-label="旧版本静态主题的直接链接" title="旧版本静态主题的直接链接" href="https://duxapp.com/blog/theme#%E6%97%A7%E7%89%88%E6%9C%AC%E9%9D%99%E6%80%81%E4%B8%BB%E9%A2%98">​</a></h2>
<p>在之前的版本中已经支持主题功能，在用户配置用，使用模块的 theme 字段配置主题，像下面这样</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token comment" style="color:#93a1a1">// configs/config/index.js</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token literal-property property" style="color:#2aa198">option</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token comment" style="color:#93a1a1">// 基础模块</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token literal-property property" style="color:#2aa198">duxapp</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token literal-property property" style="color:#2aa198">theme</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token literal-property property" style="color:#2aa198">primaryColor</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'#CDDE00'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token literal-property property" style="color:#2aa198">secondaryColor</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'#FDD000'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token literal-property property" style="color:#2aa198">successColor</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'#34a853'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token literal-property property" style="color:#2aa198">warningColor</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'#fbbc05'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token literal-property property" style="color:#2aa198">dangerColor</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'#ea4335'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token literal-property property" style="color:#2aa198">pageColor</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'#fafbf8'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>配置了这些主题参数，会通过一个脚本转化为scss变量被加入到全局scss变量中，就像下面这样</p>
<div class="language-css codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-css codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token plain">$</span><span class="token property" style="color:#2aa198">duxappPrimaryColor</span><span class="token punctuation" style="color:#657b83">:</span><span class="token plain"> </span><span class="token hexcode color">#CDDE00</span><span class="token punctuation" style="color:#657b83">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">$</span><span class="token property" style="color:#2aa198">duxappSecondaryColor</span><span class="token punctuation" style="color:#657b83">:</span><span class="token plain"> </span><span class="token hexcode color">#FDD000</span><span class="token punctuation" style="color:#657b83">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">$</span><span class="token property" style="color:#2aa198">duxappSuccessColor</span><span class="token punctuation" style="color:#657b83">:</span><span class="token plain"> </span><span class="token hexcode color">#34a853</span><span class="token punctuation" style="color:#657b83">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">$</span><span class="token property" style="color:#2aa198">duxappDangerColor</span><span class="token punctuation" style="color:#657b83">:</span><span class="token plain"> </span><span class="token hexcode color">#ea4335</span><span class="token punctuation" style="color:#657b83">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">$</span><span class="token property" style="color:#2aa198">duxappWarningColor</span><span class="token punctuation" style="color:#657b83">:</span><span class="token plain"> </span><span class="token hexcode color">#fbbc05</span><span class="token punctuation" style="color:#657b83">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">$</span><span class="token property" style="color:#2aa198">duxappPageColor</span><span class="token punctuation" style="color:#657b83">:</span><span class="token plain"> </span><span class="token hexcode color">#fafbf8</span><span class="token punctuation" style="color:#657b83">;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>然后你就能在任何scss文件中调用这些变量,例如 duxappStyle 的全局scss中调用这些变量，当然也不局限于这个文件，任何的scss都能调用这些变量</p>
<div class="language-css codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-css codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token selector" style="color:#2aa198">// src/duxappStyle/app</span><span class="token selector class" style="color:#2aa198">.scss</span><span class="token selector" style="color:#2aa198"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token selector" style="color:#2aa198"></span><span class="token selector class" style="color:#2aa198">.bg-primary</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token property" style="color:#2aa198">background-color</span><span class="token punctuation" style="color:#657b83">:</span><span class="token plain"> $duxappPrimaryColor</span><span class="token punctuation" style="color:#657b83">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token selector class" style="color:#2aa198">.bg-secondary</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token property" style="color:#2aa198">background-color</span><span class="token punctuation" style="color:#657b83">:</span><span class="token plain"> $duxappSecondaryColor</span><span class="token punctuation" style="color:#657b83">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token selector class" style="color:#2aa198">.bg-success</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token property" style="color:#2aa198">background-color</span><span class="token punctuation" style="color:#657b83">:</span><span class="token plain"> $duxappSuccessColor</span><span class="token punctuation" style="color:#657b83">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>然后在你的项目中就可以调用这些全局类名就能获得对应的样式</p>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">View</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">bg-primary</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag punctuation" style="color:#657b83">/&gt;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>如果要编写 style 的时候获取这些主题参数，可以像下面这样</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token keyword module" style="color:#c5a5c5">import</span><span class="token plain"> </span><span class="token imports punctuation" style="color:#657b83">{</span><span class="token imports"> duxappTheme </span><span class="token imports punctuation" style="color:#657b83">}</span><span class="token plain"> </span><span class="token keyword module" style="color:#c5a5c5">from</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'@/duxapp'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token operator" style="color:#fc929e">&lt;</span><span class="token maybe-class-name">View</span><span class="token plain"> style</span><span class="token operator" style="color:#fc929e">=</span><span class="token punctuation" style="color:#657b83">{</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"> </span><span class="token literal-property property" style="color:#2aa198">backgroundColor</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> duxappTheme</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">primaryColor</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">/</span><span class="token operator" style="color:#fc929e">&gt;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<ul>
<li>关于如何定制自己模块的主题，查看<a href="https://duxapp.com/docs/course/started/theme#%E9%85%8D%E7%BD%AE%E8%87%AA%E5%B7%B1%E6%A8%A1%E5%9D%97%E7%9A%84%E4%B8%BB%E9%A2%98" target="_blank" rel="noopener noreferrer">这个文档</a></li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="新版本的动态主题">新版本的动态主题<a class="hash-link" aria-label="新版本的动态主题的直接链接" title="新版本的动态主题的直接链接" href="https://duxapp.com/blog/theme#%E6%96%B0%E7%89%88%E6%9C%AC%E7%9A%84%E5%8A%A8%E6%80%81%E4%B8%BB%E9%A2%98">​</a></h2>
<p>为了最小的升级成本，系统未对之前的主题系统进行大改，而是在当前的主题系统模式上进行简单调整就能使用</p>
<p>之前所有的内容在新的主题系统中都是生效的，如果你要切换到动态主题，只需要在用户配置中，配置多套主题即可</p>
<ul>
<li>将当前的模块配置中的 <code>theme</code> 移动到 <code>themes.light</code> （每个模块的配置都需要同样的操作）</li>
<li>在 <code>themes</code> 里面新增一个主题配置 <code>dark</code>，表示夜间模式的主题</li>
</ul>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>信息</div><div class="admonitionContent_BuS1"><ul>
<li>如果没有指定 <code>themeConfig.default</code> light将会作为默认主题，</li>
<li>在你配置 <code>dark</code> 的主题的时候，如果和默认配置 <code>light</code> 相同的配置，你可以不配置，只需要与 <code>light</code> 不同的部分即可</li>
</ul></div></div>
<ul>
<li>新增 <code>themeConfig</code> 配置项目，参考下面的示例，需要在里面配置主题列表 <code>themes</code> (必须配置) 其他三个选项为可选配配置，<code>dark</code> 用于指定页面模式主题，<code>light</code> 用于指定白天模式主题，<code>default</code> 指定默认主题</li>
<li>只有当夜间模式和白天模式两个主题都存在的情况下系统才会跟随系统主题进行系统切换</li>
<li>除了 <code>light</code> <code>dark</code> 你还可以配置更多的主题，通过 <code>theme.setMode(主题)</code> 切换</li>
</ul>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> config </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token literal-property property" style="color:#2aa198">option</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token comment" style="color:#93a1a1">// 基础模块</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token literal-property property" style="color:#2aa198">duxapp</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token literal-property property" style="color:#2aa198">themeConfig</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">themes</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token literal-property property" style="color:#2aa198">light</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">            </span><span class="token literal-property property" style="color:#2aa198">name</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'明亮主题'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">            </span><span class="token literal-property property" style="color:#2aa198">color</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'#fff'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token literal-property property" style="color:#2aa198">dark</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">            </span><span class="token literal-property property" style="color:#2aa198">name</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'暗黑主题'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">            </span><span class="token literal-property property" style="color:#2aa198">color</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'#333'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token comment" style="color:#93a1a1">// dark: 'dark',</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token comment" style="color:#93a1a1">// light: 'light',</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token comment" style="color:#93a1a1">// default: 'light'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token literal-property property" style="color:#2aa198">themes</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">light</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token literal-property property" style="color:#2aa198">primaryColor</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'#E70012'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token literal-property property" style="color:#2aa198">secondaryColor</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'#0092e8'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token literal-property property" style="color:#2aa198">successColor</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'#34a853'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token literal-property property" style="color:#2aa198">warningColor</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'#fbbc05'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token literal-property property" style="color:#2aa198">dangerColor</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'#ea4335'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token literal-property property" style="color:#2aa198">pageColor</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'#F7F9FC'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token literal-property property" style="color:#2aa198">textColor1</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'#373D52'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token literal-property property" style="color:#2aa198">textColor2</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'#73778E'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token literal-property property" style="color:#2aa198">textColor3</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'#A1A6B6'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token literal-property property" style="color:#2aa198">textColor4</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'#FFF'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token literal-property property" style="color:#2aa198">header</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">            </span><span class="token literal-property property" style="color:#2aa198">color</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'#fff'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> </span><span class="token comment" style="color:#93a1a1">// 仅支持rgb hex值，请勿使用纯单词 设置为数组将显示一个渐变按钮</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">            </span><span class="token literal-property property" style="color:#2aa198">textColor</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'#000'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> </span><span class="token comment" style="color:#93a1a1">// 文本颜色</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">            </span><span class="token literal-property property" style="color:#2aa198">showWechat</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token boolean" style="color:#ff8b50">true</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> </span><span class="token comment" style="color:#93a1a1">// 微信公众号是否显示header</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">            </span><span class="token literal-property property" style="color:#2aa198">showWap</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token boolean" style="color:#ff8b50">true</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> </span><span class="token comment" style="color:#93a1a1">// h5是否显示header</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">dark</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token literal-property property" style="color:#2aa198">pageColor</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'#1E1E1E'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token literal-property property" style="color:#2aa198">whiteColor</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'#181818'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token literal-property property" style="color:#2aa198">blackColor</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'#fff'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token literal-property property" style="color:#2aa198">lineColor</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'#1F1F1F'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token literal-property property" style="color:#2aa198">textColor1</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'#FFF'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token literal-property property" style="color:#2aa198">textColor2</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'#A1A6B6'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token literal-property property" style="color:#2aa198">textColor3</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'#73778E'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token literal-property property" style="color:#2aa198">textColor4</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'#373D52'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token literal-property property" style="color:#2aa198">header</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">            </span><span class="token literal-property property" style="color:#2aa198">color</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'#121212'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">            </span><span class="token literal-property property" style="color:#2aa198">textColor</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'#fff'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token literal-property property" style="color:#2aa198">loading</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">            </span><span class="token literal-property property" style="color:#2aa198">dark</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'#fff'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">            </span><span class="token literal-property property" style="color:#2aa198">blank</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'#7a7a7a'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token literal-property property" style="color:#2aa198">duxui</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token literal-property property" style="color:#2aa198">themes</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">light</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token literal-property property" style="color:#2aa198">button</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">            </span><span class="token literal-property property" style="color:#2aa198">radiusType</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'round'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">dark</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token literal-property property" style="color:#2aa198">tabBar</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">            </span><span class="token literal-property property" style="color:#2aa198">nameColor</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'#888'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">            </span><span class="token literal-property property" style="color:#2aa198">nameHoverColor</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'#fff'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token keyword module" style="color:#c5a5c5">export</span><span class="token plain"> </span><span class="token keyword module" style="color:#c5a5c5">default</span><span class="token plain"> config</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="动态切换">动态切换<a class="hash-link" aria-label="动态切换的直接链接" title="动态切换的直接链接" href="https://duxapp.com/blog/theme#%E5%8A%A8%E6%80%81%E5%88%87%E6%8D%A2">​</a></h2>
<p>默认情况下只需要你配置了 <code>light</code> 和 <code>dark</code> 两个主题，程序就能跟随系统自动切换</p>
<p>如果你需要手动切换，下面是一动态切换主题的示例代码，参考这个进行开发，<code>theme</code> 是基础模块导出的工具</p>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>信息</div><div class="admonitionContent_BuS1"><ul>
<li>动态切换（包括自动切换）现在仅支持 小程序 H5端，其他平台还在开发中</li>
<li>不支持的平台会按照配置的默认主题显示</li>
</ul></div></div>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token keyword module" style="color:#c5a5c5">import</span><span class="token plain"> </span><span class="token imports punctuation" style="color:#657b83">{</span><span class="token imports"> </span><span class="token imports maybe-class-name">Header</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">ScrollView</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">TopView</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">GroupList</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> theme</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">Button</span><span class="token imports"> </span><span class="token imports punctuation" style="color:#657b83">}</span><span class="token plain"> </span><span class="token keyword module" style="color:#c5a5c5">from</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'@/duxuiExample'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token keyword module" style="color:#c5a5c5">export</span><span class="token plain"> </span><span class="token keyword module" style="color:#c5a5c5">default</span><span class="token plain"> </span><span class="token keyword" style="color:#c5a5c5">function</span><span class="token plain"> </span><span class="token function maybe-class-name" style="color:#79b6f2">ThemeExample</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> mode </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> theme</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">useMode</span><span class="token punctuation" style="color:#657b83">(</span><span class="token boolean" style="color:#ff8b50">true</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> modes </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> theme</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">useModes</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#c5a5c5">return</span><span class="token plain"> </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">TopView</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Header</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">title</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">Theme</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag punctuation" style="color:#657b83">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">ScrollView</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">GroupList</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">GroupList.Item</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">title</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">主题切换功能</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">desc</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">主题切换当前仅支持小程序和H5端，其他端还在努力开发中</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">          </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">gap-3</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">        </span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">            modes</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">map</span><span class="token punctuation" style="color:#657b83">(</span><span class="token parameter">item</span><span class="token plain"> </span><span class="token arrow operator" style="color:#fc929e">=&gt;</span><span class="token plain"> </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Button</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">              </span><span class="token tag attr-name" style="color:#c5a5c5">type</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">primary</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">              </span><span class="token tag attr-name" style="color:#c5a5c5">plain</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e">item</span><span class="token tag script language-javascript punctuation" style="color:#657b83">.</span><span class="token tag script language-javascript property-access" style="color:#fc929e">mode</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript operator" style="color:#fc929e">!==</span><span class="token tag script language-javascript" style="color:#fc929e"> mode</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">              </span><span class="token tag attr-name" style="color:#c5a5c5">key</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e">item</span><span class="token tag script language-javascript punctuation" style="color:#657b83">.</span><span class="token tag script language-javascript property-access" style="color:#fc929e">name</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">              </span><span class="token tag attr-name" style="color:#c5a5c5">onClick</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript punctuation" style="color:#657b83">(</span><span class="token tag script language-javascript punctuation" style="color:#657b83">)</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript arrow operator" style="color:#fc929e">=&gt;</span><span class="token tag script language-javascript" style="color:#fc929e"> item</span><span class="token tag script language-javascript punctuation" style="color:#657b83">.</span><span class="token tag script language-javascript keyword control-flow" style="color:#c5a5c5">switch</span><span class="token tag script language-javascript punctuation" style="color:#657b83">(</span><span class="token tag script language-javascript punctuation" style="color:#657b83">)</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">              </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">l</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">            </span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain">item</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">name</span><span class="token punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Button</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">GroupList.Item</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">GroupList</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">ScrollView</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">  </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">TopView</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="如何实现的">如何实现的<a class="hash-link" aria-label="如何实现的的直接链接" title="如何实现的的直接链接" href="https://duxapp.com/blog/theme#%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0%E7%9A%84">​</a></h2>
<p>动态主题在不同的平台使用了不同的实现方案，具体来说，小程序 H5端使用了css变量，RN端使用了插件动态修改组件代码实现动态切换</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="小程序-h5端">小程序 H5端<a class="hash-link" aria-label="小程序 H5端的直接链接" title="小程序 H5端的直接链接" href="https://duxapp.com/blog/theme#%E5%B0%8F%E7%A8%8B%E5%BA%8F-h5%E7%AB%AF">​</a></h3>
<p>小程序 H5端 css 变量 的实现流程</p>
<ul>
<li>duxapp-cli 先将用户配置的主题名称进行统计并存储</li>
<li>duxapp-cli 根据用户主题配置生成主题scss文件 <code>src/duxapp/userTheme/index.scss</code>，这个文件会自动被 TopView组件引用</li>
<li>编写一个 <code>theme-loader</code> 将其插入到 webpack 的 loader 中，在处理 scss 之前，先解析动态主题，目的是将调用到scss主题变量的代码，替换为调用css变量</li>
<li>主题系统通过一个改变类型动态切换css变量的流程</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="rn端">RN端<a class="hash-link" aria-label="RN端的直接链接" title="RN端的直接链接" href="https://duxapp.com/blog/theme#rn%E7%AB%AF">​</a></h2>
<ul>
<li>duxapp-cli 先将用户配置的主题名称进行统计并存储</li>
<li>duxapp-cli 根据用户主题配置生成主题js文件 <code>src/duxapp/userTheme/index.rn.js</code></li>
<li>编写一个 <code>theme-loader</code> 将其插入到 webpack 的 loader 中，在处理 scss 之前，先解析动态主题，目的是将调用到scss主题变量的代码，替换为调用css变量</li>
<li>使用 patch-package 修改了 rn 端相关插件，主要改变的功能是，解析 <code>theme-loader</code> 生成的css变量，并替换成主题变量，并且将之前的 <code>styleSheet</code> 修改为函数的方式导出，函数接受一个主题名称，传入不同的主题名称，返回不同的 <code>styleSheet</code></li>
<li>修改插件，让插件在函数组件的头部，插入一个 hook ，这个 hook 会监听主题改变，并更新 <code>styleSheet</code> 并且在主题更新后，重新渲染组件</li>
</ul>
<p>因为 React 组件的编写形式太过灵活多变，因此最后一步，在函数组件头部插入一个hook的操作，并不一定所有组件都能插入，局具体使用的显示参考<a href="https://duxapp.com/docs/course/started/theme#rn-%E7%AB%AF" target="_blank" rel="noopener noreferrer">这个说明</a></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="最后">最后<a class="hash-link" aria-label="最后的直接链接" title="最后的直接链接" href="https://duxapp.com/blog/theme#%E6%9C%80%E5%90%8E">​</a></h2>
<p>duxapp的主题系统经历了从静态配置到动态切换的演进过程：</p>
<ul>
<li>
<p>兼容性：新版本完美兼容旧版的静态主题配置</p>
</li>
<li>
<p>灵活性：支持多主题配置和动态切换</p>
</li>
<li>
<p>跨平台：针对不同平台采用最优实现方案</p>
</li>
<li>
<p>易用性：提供简洁的API和配置方式</p>
</li>
</ul>
<p>开发者可以根据项目需求选择合适的主题方案，通过简单的配置即可实现强大的主题功能。未来版本将继续优化各平台的兼容性和性能表现。</p>
<p><a href="https://duxapp.com/docs/course/started/theme" target="_blank" rel="noopener noreferrer">主题开发文档</a></p>
<p><a href="https://duxapp.com/" target="_blank" rel="noopener noreferrer">开发文档</a><br>
<a href="https://github.com/duxapp" target="_blank" rel="noopener noreferrer">GitHub</a></p>]]></content:encoded>
            <category>duxapp</category>
            <category>主题</category>
        </item>
        <item>
            <title><![CDATA[在Taro中开发一个跨端Svg组件，同时支持小程序、H5、React Native]]></title>
            <link>https://duxapp.com/blog/svg</link>
            <guid>https://duxapp.com/blog/svg</guid>
            <pubDate>Mon, 12 May 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Taro系列中一直没有跨端的绘图工具，小程序端支持canvas但是不支持svg，RN端有 react-native-svg 支持svg，但是没有很好原生的canvas插件，社区的canvas都是基于WebView实现的，或者skia，这个插件的书写方式和canvas有较大的差异。所以开发了这个兼容小程序、H5和React Native 的Svg组件，来实现跨端绘图]]></description>
            <content:encoded><![CDATA[<p>Taro系列中一直没有跨端的绘图工具，小程序端支持canvas但是不支持svg，RN端有 react-native-svg 支持svg，但是没有很好原生的canvas插件，社区的canvas都是基于WebView实现的，或者skia，这个插件的书写方式和canvas有较大的差异</p>
<p>所以开发了这个兼容小程序、H5和React Native 的Svg组件，来实现跨端绘图</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="前言">前言<a class="hash-link" aria-label="前言的直接链接" title="前言的直接链接" href="https://duxapp.com/blog/svg#%E5%89%8D%E8%A8%80">​</a></h2>
<p>在小程序上面，是不支持直接编写svg代码的，但是有间接的方式让他支持，就是使用Image渲染svg，或者使用css的背景图渲染一个svg，但是这样写有一定的局限性，例如要支持动画、组件事件，将svg保存到本地等都无法实现</p>
<p>所以我选择了使用Canvas来模拟开发svg的相关组件支持，在RN端则是使用现在已经有的 <code>react-native-svg</code> 这个插件，因此我们只需要在小程序和H5端模拟 <code>react-native-svg</code> 组件的功能，组件属性及其功能完全按照 <code>react-native-svg</code> 规范进行开发</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="当前组件属性支持">当前组件属性支持<a class="hash-link" aria-label="当前组件属性支持的直接链接" title="当前组件属性支持的直接链接" href="https://duxapp.com/blog/svg#%E5%BD%93%E5%89%8D%E7%BB%84%E4%BB%B6%E5%B1%9E%E6%80%A7%E6%94%AF%E6%8C%81">​</a></h2>
<p>Svg中有大量的组件，用来绘制各种图形或者图片</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="已经支持的组件">已经支持的组件<a class="hash-link" aria-label="已经支持的组件的直接链接" title="已经支持的组件的直接链接" href="https://duxapp.com/blog/svg#%E5%B7%B2%E7%BB%8F%E6%94%AF%E6%8C%81%E7%9A%84%E7%BB%84%E4%BB%B6">​</a></h3>
<ul>
<li>Svg<br>
<code>width</code> <code>height</code> <code>viewBox</code> <code>preserveAspectRatio</code></li>
<li>Rect<br>
<code>x</code> <code>y</code> <code>width</code> <code>height</code></li>
<li>Circle<br>
<code>cx</code> <code>cy</code> <code>r</code></li>
<li>Ellipse<br>
<code>cx</code> <code>cy</code> <code>rx</code> <code>ry</code></li>
<li>Line<br>
<code>x1</code> <code>y1</code> <code>x2</code> <code>y2</code></li>
<li>Image<br>
<code>x</code> <code>y</code> <code>width</code> <code>height</code> <code>preserveAspectRatio</code></li>
<li>Text<br>
<code>x</code> <code>y</code> <code>dx</code> <code>dy</code> <code>fontSize</code> <code>fontWeight</code> <code>fontFamily</code> <code>textAnchor</code> <code>fontStyle</code></li>
<li>TSpan<br>
<code>x</code> <code>y</code> <code>dx</code> <code>dy</code> <code>fontSize</code> <code>fontWeight</code> <code>fontFamily</code> <code>textAnchor</code> <code>fontStyle</code></li>
<li>Polyline<br>
<code>points</code></li>
<li>Polygon<br>
<code>points</code></li>
<li>Path<br>
<code>d</code></li>
<li>Defs</li>
<li>Use<br>
<code>href</code> <code>x</code> <code>y</code></li>
<li>G</li>
<li>LinearGradient<br>
<code>x1</code> <code>y1</code> <code>x2</code> <code>y2</code></li>
<li>RadialGradient<br>
<code>cx</code> <code>cy</code> <code>rx</code> <code>ry</code> <code>fx</code> <code>fy</code></li>
<li>Stop<br>
<code>offset</code> <code>stopColor</code> <code>stopOpacity</code></li>
<li>ClipPath</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="支持的公共属性">支持的公共属性<a class="hash-link" aria-label="支持的公共属性的直接链接" title="支持的公共属性的直接链接" href="https://duxapp.com/blog/svg#%E6%94%AF%E6%8C%81%E7%9A%84%E5%85%AC%E5%85%B1%E5%B1%9E%E6%80%A7">​</a></h3>
<ul>
<li>id</li>
<li>style</li>
<li>opacity</li>
<li>fill</li>
<li>fillOpacity</li>
<li>stroke</li>
<li>strokeWidth</li>
<li>strokeOpacity</li>
<li>strokeLinecap</li>
<li>strokeLinejoin</li>
<li>strokeDasharray</li>
<li>strokeDashoffset</li>
<li>clipPath</li>
<li>origin</li>
<li>originX</li>
<li>originY</li>
<li>translate</li>
<li>translateX</li>
<li>translateY</li>
<li>rotation</li>
<li>scale</li>
<li>scaleX</li>
<li>scaleY</li>
<li>skew</li>
<li>skewX</li>
<li>skewY</li>
<li>transform (如果要使用变换动画，需要使用这个属性实现，其他变换属性RN端不支持动画)</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="动画支持">动画支持<a class="hash-link" aria-label="动画支持的直接链接" title="动画支持的直接链接" href="https://duxapp.com/blog/svg#%E5%8A%A8%E7%94%BB%E6%94%AF%E6%8C%81">​</a></h2>
<p>因为选择了 <code>react-native-svg</code> 作为开发参考，因此在动画支持方面，也参照了RN的相关API <code>Animated</code> 和 <code>Easing</code></p>
<p>下面是一个循环动画的使用示例</p>
<p><img decoding="async" loading="lazy" alt="效果图" src="https://duxapp.com/assets/images/an-cfd95f6e5ea78f708747a15fdac88885.gif" width="360" height="244" class="img_ev3q"></p>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token keyword module" style="color:#c5a5c5">import</span><span class="token plain"> </span><span class="token imports punctuation" style="color:#657b83">{</span><span class="token imports"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token imports">  </span><span class="token imports maybe-class-name">Svg</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">Rect</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token imports">  </span><span class="token imports maybe-class-name">Animated</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">Easing</span><span class="token imports"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token imports"></span><span class="token imports punctuation" style="color:#657b83">}</span><span class="token plain"> </span><span class="token keyword module" style="color:#c5a5c5">from</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'@/duxui/components/Svg'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token keyword module" style="color:#c5a5c5">import</span><span class="token plain"> </span><span class="token imports punctuation" style="color:#657b83">{</span><span class="token imports"> useEffect</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> useRef </span><span class="token imports punctuation" style="color:#657b83">}</span><span class="token plain"> </span><span class="token keyword module" style="color:#c5a5c5">from</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'react'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> </span><span class="token maybe-class-name">AnimatedRect</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token maybe-class-name">Animated</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">createAnimatedComponent</span><span class="token punctuation" style="color:#657b83">(</span><span class="token maybe-class-name">Rect</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> </span><span class="token function-variable function maybe-class-name" style="color:#79b6f2">Loop</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#fc929e">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> primary </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> duxappTheme</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">primaryColor</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> secondary </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> duxappTheme</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">secondaryColor</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> x </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token function" style="color:#79b6f2">useRef</span><span class="token punctuation" style="color:#657b83">(</span><span class="token keyword" style="color:#c5a5c5">new</span><span class="token plain"> </span><span class="token class-name" style="color:#fac863">Animated</span><span class="token class-name punctuation" style="color:#657b83">.</span><span class="token class-name" style="color:#fac863">Value</span><span class="token punctuation" style="color:#657b83">(</span><span class="token number" style="color:#5a9bcf">0</span><span class="token punctuation" style="color:#657b83">)</span><span class="token punctuation" style="color:#657b83">)</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">current</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> size </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token number" style="color:#5a9bcf">50</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token function" style="color:#79b6f2">useEffect</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#fc929e">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token function" style="color:#79b6f2">setTimeout</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#fc929e">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token maybe-class-name">Animated</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">loop</span><span class="token punctuation" style="color:#657b83">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token maybe-class-name">Animated</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">timing</span><span class="token punctuation" style="color:#657b83">(</span><span class="token plain">x</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token literal-property property" style="color:#2aa198">toValue</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token number" style="color:#5a9bcf">4</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token literal-property property" style="color:#2aa198">duration</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token number" style="color:#5a9bcf">3000</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token literal-property property" style="color:#2aa198">easing</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token maybe-class-name">Easing</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">bounce</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token literal-property property" style="color:#2aa198">useNativeDriver</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token boolean" style="color:#ff8b50">false</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token punctuation" style="color:#657b83">)</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">start</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> </span><span class="token number" style="color:#5a9bcf">500</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">[</span><span class="token plain">x</span><span class="token punctuation" style="color:#657b83">]</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> width </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token function" style="color:#79b6f2">pxNum</span><span class="token punctuation" style="color:#657b83">(</span><span class="token number" style="color:#5a9bcf">702</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> height </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token function" style="color:#79b6f2">pxNum</span><span class="token punctuation" style="color:#657b83">(</span><span class="token number" style="color:#5a9bcf">360</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#c5a5c5">return</span><span class="token plain"> </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">GroupList.Item</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">title</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">循环动画</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">desc</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">利用 interpolate 将动画值映射到任意范围</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Svg</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">width</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e">width</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">height</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e">height</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">AnimatedRect</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">        </span><span class="token tag attr-name" style="color:#c5a5c5">x</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e">x</span><span class="token tag script language-javascript punctuation" style="color:#657b83">.</span><span class="token tag script language-javascript method function property-access" style="color:#79b6f2">interpolate</span><span class="token tag script language-javascript punctuation" style="color:#657b83">(</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag script language-javascript" style="color:#fc929e">          </span><span class="token tag script language-javascript literal-property property" style="color:#2aa198">inputRange</span><span class="token tag script language-javascript operator" style="color:#fc929e">:</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript punctuation" style="color:#657b83">[</span><span class="token tag script language-javascript number" style="color:#5a9bcf">0</span><span class="token tag script language-javascript punctuation" style="color:#657b83">,</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript number" style="color:#5a9bcf">1</span><span class="token tag script language-javascript punctuation" style="color:#657b83">,</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript number" style="color:#5a9bcf">2</span><span class="token tag script language-javascript punctuation" style="color:#657b83">,</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript number" style="color:#5a9bcf">3</span><span class="token tag script language-javascript punctuation" style="color:#657b83">,</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript number" style="color:#5a9bcf">4</span><span class="token tag script language-javascript punctuation" style="color:#657b83">]</span><span class="token tag script language-javascript punctuation" style="color:#657b83">,</span><span class="token tag script language-javascript" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag script language-javascript" style="color:#fc929e">          </span><span class="token tag script language-javascript literal-property property" style="color:#2aa198">outputRange</span><span class="token tag script language-javascript operator" style="color:#fc929e">:</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript punctuation" style="color:#657b83">[</span><span class="token tag script language-javascript number" style="color:#5a9bcf">0</span><span class="token tag script language-javascript punctuation" style="color:#657b83">,</span><span class="token tag script language-javascript" style="color:#fc929e"> width </span><span class="token tag script language-javascript operator" style="color:#fc929e">-</span><span class="token tag script language-javascript" style="color:#fc929e"> size</span><span class="token tag script language-javascript punctuation" style="color:#657b83">,</span><span class="token tag script language-javascript" style="color:#fc929e"> width </span><span class="token tag script language-javascript operator" style="color:#fc929e">-</span><span class="token tag script language-javascript" style="color:#fc929e"> size</span><span class="token tag script language-javascript punctuation" style="color:#657b83">,</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript number" style="color:#5a9bcf">0</span><span class="token tag script language-javascript punctuation" style="color:#657b83">,</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript number" style="color:#5a9bcf">0</span><span class="token tag script language-javascript punctuation" style="color:#657b83">]</span><span class="token tag script language-javascript" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag script language-javascript" style="color:#fc929e">        </span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag script language-javascript punctuation" style="color:#657b83">)</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">        </span><span class="token tag attr-name" style="color:#c5a5c5">y</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e">x</span><span class="token tag script language-javascript punctuation" style="color:#657b83">.</span><span class="token tag script language-javascript method function property-access" style="color:#79b6f2">interpolate</span><span class="token tag script language-javascript punctuation" style="color:#657b83">(</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag script language-javascript" style="color:#fc929e">          </span><span class="token tag script language-javascript literal-property property" style="color:#2aa198">inputRange</span><span class="token tag script language-javascript operator" style="color:#fc929e">:</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript punctuation" style="color:#657b83">[</span><span class="token tag script language-javascript number" style="color:#5a9bcf">0</span><span class="token tag script language-javascript punctuation" style="color:#657b83">,</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript number" style="color:#5a9bcf">1</span><span class="token tag script language-javascript punctuation" style="color:#657b83">,</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript number" style="color:#5a9bcf">2</span><span class="token tag script language-javascript punctuation" style="color:#657b83">,</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript number" style="color:#5a9bcf">3</span><span class="token tag script language-javascript punctuation" style="color:#657b83">,</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript number" style="color:#5a9bcf">4</span><span class="token tag script language-javascript punctuation" style="color:#657b83">]</span><span class="token tag script language-javascript punctuation" style="color:#657b83">,</span><span class="token tag script language-javascript" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag script language-javascript" style="color:#fc929e">          </span><span class="token tag script language-javascript literal-property property" style="color:#2aa198">outputRange</span><span class="token tag script language-javascript operator" style="color:#fc929e">:</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript punctuation" style="color:#657b83">[</span><span class="token tag script language-javascript number" style="color:#5a9bcf">0</span><span class="token tag script language-javascript punctuation" style="color:#657b83">,</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript number" style="color:#5a9bcf">0</span><span class="token tag script language-javascript punctuation" style="color:#657b83">,</span><span class="token tag script language-javascript" style="color:#fc929e"> height </span><span class="token tag script language-javascript operator" style="color:#fc929e">-</span><span class="token tag script language-javascript" style="color:#fc929e"> size</span><span class="token tag script language-javascript punctuation" style="color:#657b83">,</span><span class="token tag script language-javascript" style="color:#fc929e"> height </span><span class="token tag script language-javascript operator" style="color:#fc929e">-</span><span class="token tag script language-javascript" style="color:#fc929e"> size</span><span class="token tag script language-javascript punctuation" style="color:#657b83">,</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript number" style="color:#5a9bcf">0</span><span class="token tag script language-javascript punctuation" style="color:#657b83">]</span><span class="token tag script language-javascript" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag script language-javascript" style="color:#fc929e">        </span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag script language-javascript punctuation" style="color:#657b83">)</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">        </span><span class="token tag attr-name" style="color:#c5a5c5">width</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e">size</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">        </span><span class="token tag attr-name" style="color:#c5a5c5">height</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e">size</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">        </span><span class="token tag attr-name" style="color:#c5a5c5">rx</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">10</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">ry</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">10</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">stroke</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e">secondary</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">fill</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e">primary</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">      </span><span class="token tag punctuation" style="color:#657b83">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Svg</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">  </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">GroupList.Item</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="组件事件">组件事件<a class="hash-link" aria-label="组件事件的直接链接" title="组件事件的直接链接" href="https://duxapp.com/blog/svg#%E7%BB%84%E4%BB%B6%E4%BA%8B%E4%BB%B6">​</a></h2>
<p>为了实现组件事件，模拟 React Native 的 <code>PanResponder</code> API，在小程序和H5端实现了相关的功能</p>
<p>大多数组件都支持以下触摸事件</p>
<ul>
<li>onPress</li>
<li>onPressIn</li>
<li>onPressOut</li>
<li>onLongPress</li>
</ul>
<p>下面两个示例，一个展示点击事件，一个事件结合动画实现拖拽效果</p>
<p><img decoding="async" loading="lazy" alt="效果图" src="https://duxapp.com/assets/images/event-dbde999b6de3c6a17ec877227025170c.gif" width="350" height="392" class="img_ev3q"></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="事件示例">事件示例<a class="hash-link" aria-label="事件示例的直接链接" title="事件示例的直接链接" href="https://duxapp.com/blog/svg#%E4%BA%8B%E4%BB%B6%E7%A4%BA%E4%BE%8B">​</a></h3>
<p>下面的代码我们能看到点击不同的组件将获得对应组件的事件，这三个形状是有覆盖关系的</p>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> </span><span class="token function-variable function maybe-class-name" style="color:#79b6f2">Event</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#fc929e">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#c5a5c5">return</span><span class="token plain"> </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">GroupList.Item</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">title</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">组件事件</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">desc</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">点击对应的图形会有对应的点击事件</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Svg</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">width</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">100</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">height</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">100</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Circle</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">        </span><span class="token tag attr-name" style="color:#c5a5c5">cx</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">50%</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">        </span><span class="token tag attr-name" style="color:#c5a5c5">cy</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">50%</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">        </span><span class="token tag attr-name" style="color:#c5a5c5">r</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">38%</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">        </span><span class="token tag attr-name" style="color:#c5a5c5">fill</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">red</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">        </span><span class="token tag attr-name" style="color:#c5a5c5">onPress</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript punctuation" style="color:#657b83">(</span><span class="token tag script language-javascript punctuation" style="color:#657b83">)</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript arrow operator" style="color:#fc929e">=&gt;</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript function" style="color:#79b6f2">toast</span><span class="token tag script language-javascript punctuation" style="color:#657b83">(</span><span class="token tag script language-javascript string" style="color:#8dc891">'点击圆形'</span><span class="token tag script language-javascript punctuation" style="color:#657b83">)</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">      </span><span class="token tag punctuation" style="color:#657b83">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Rect</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">        </span><span class="token tag attr-name" style="color:#c5a5c5">x</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">20%</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">        </span><span class="token tag attr-name" style="color:#c5a5c5">y</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">20%</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">        </span><span class="token tag attr-name" style="color:#c5a5c5">width</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">60%</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">        </span><span class="token tag attr-name" style="color:#c5a5c5">height</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">60%</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">        </span><span class="token tag attr-name" style="color:#c5a5c5">fill</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">blue</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">        </span><span class="token tag attr-name" style="color:#c5a5c5">onPress</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript punctuation" style="color:#657b83">(</span><span class="token tag script language-javascript punctuation" style="color:#657b83">)</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript arrow operator" style="color:#fc929e">=&gt;</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript function" style="color:#79b6f2">toast</span><span class="token tag script language-javascript punctuation" style="color:#657b83">(</span><span class="token tag script language-javascript string" style="color:#8dc891">'点击正方形'</span><span class="token tag script language-javascript punctuation" style="color:#657b83">)</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">      </span><span class="token tag punctuation" style="color:#657b83">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Path</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">        </span><span class="token tag attr-name" style="color:#c5a5c5">d</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">M50,5L20,99L95,39L5,39L80,99z</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">        </span><span class="token tag attr-name" style="color:#c5a5c5">fill</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">pink</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">        </span><span class="token tag attr-name" style="color:#c5a5c5">onPress</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript punctuation" style="color:#657b83">(</span><span class="token tag script language-javascript punctuation" style="color:#657b83">)</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript arrow operator" style="color:#fc929e">=&gt;</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript function" style="color:#79b6f2">toast</span><span class="token tag script language-javascript punctuation" style="color:#657b83">(</span><span class="token tag script language-javascript string" style="color:#8dc891">'点击五角星'</span><span class="token tag script language-javascript punctuation" style="color:#657b83">)</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">      </span><span class="token tag punctuation" style="color:#657b83">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Svg</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">  </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">GroupList.Item</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="结合动画">结合动画<a class="hash-link" aria-label="结合动画的直接链接" title="结合动画的直接链接" href="https://duxapp.com/blog/svg#%E7%BB%93%E5%90%88%E5%8A%A8%E7%94%BB">​</a></h3>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> </span><span class="token function-variable function maybe-class-name" style="color:#79b6f2">TouchEvent</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#fc929e">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> primary </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> duxappTheme</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">primaryColor</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> secondary </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> duxappTheme</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">secondaryColor</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> movePan </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token function" style="color:#79b6f2">useRef</span><span class="token punctuation" style="color:#657b83">(</span><span class="token keyword" style="color:#c5a5c5">new</span><span class="token plain"> </span><span class="token class-name" style="color:#fac863">Animated</span><span class="token class-name punctuation" style="color:#657b83">.</span><span class="token class-name" style="color:#fac863">ValueXY</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"> </span><span class="token literal-property property" style="color:#2aa198">x</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token number" style="color:#5a9bcf">10</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> </span><span class="token literal-property property" style="color:#2aa198">y</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token number" style="color:#5a9bcf">10</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"> </span><span class="token literal-property property" style="color:#2aa198">useNativeDriver</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token boolean" style="color:#ff8b50">false</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">)</span><span class="token punctuation" style="color:#657b83">)</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">current</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> moveEvent </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token function" style="color:#79b6f2">useRef</span><span class="token punctuation" style="color:#657b83">(</span><span class="token maybe-class-name">PanResponder</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">create</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token function-variable function" style="color:#79b6f2">onMoveShouldSetPanResponder</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#fc929e">=&gt;</span><span class="token plain"> </span><span class="token boolean" style="color:#ff8b50">true</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token function-variable function" style="color:#79b6f2">onPanResponderGrant</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#fc929e">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      movePan</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">setOffset</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">x</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> movePan</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">x</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">_value</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">y</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> movePan</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">y</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">_value</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token function-variable function" style="color:#79b6f2">onPanResponderMove</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">(</span><span class="token parameter">e</span><span class="token parameter punctuation" style="color:#657b83">,</span><span class="token parameter"> gestureState</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#fc929e">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      movePan</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">setValue</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"> </span><span class="token literal-property property" style="color:#2aa198">x</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> gestureState</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">dx</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> </span><span class="token literal-property property" style="color:#2aa198">y</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> gestureState</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">dy</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token function-variable function" style="color:#79b6f2">onPanResponderRelease</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#fc929e">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      movePan</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">flattenOffset</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">)</span><span class="token punctuation" style="color:#657b83">)</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">current</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> moveOriginPan </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token function" style="color:#79b6f2">useRef</span><span class="token punctuation" style="color:#657b83">(</span><span class="token keyword" style="color:#c5a5c5">new</span><span class="token plain"> </span><span class="token class-name" style="color:#fac863">Animated</span><span class="token class-name punctuation" style="color:#657b83">.</span><span class="token class-name" style="color:#fac863">ValueXY</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"> </span><span class="token literal-property property" style="color:#2aa198">x</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token number" style="color:#5a9bcf">150</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> </span><span class="token literal-property property" style="color:#2aa198">y</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token number" style="color:#5a9bcf">50</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"> </span><span class="token literal-property property" style="color:#2aa198">useNativeDriver</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token boolean" style="color:#ff8b50">true</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">)</span><span class="token punctuation" style="color:#657b83">)</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">current</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> moveOriginEvent </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token function" style="color:#79b6f2">useRef</span><span class="token punctuation" style="color:#657b83">(</span><span class="token maybe-class-name">PanResponder</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">create</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token function-variable function" style="color:#79b6f2">onMoveShouldSetPanResponder</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#fc929e">=&gt;</span><span class="token plain"> </span><span class="token boolean" style="color:#ff8b50">true</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token function-variable function" style="color:#79b6f2">onPanResponderMove</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">(</span><span class="token parameter">e</span><span class="token parameter punctuation" style="color:#657b83">,</span><span class="token parameter"> gestureState</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#fc929e">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      moveOriginPan</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">setValue</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"> </span><span class="token literal-property property" style="color:#2aa198">x</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> gestureState</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">dx</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">+</span><span class="token plain"> </span><span class="token number" style="color:#5a9bcf">150</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> </span><span class="token literal-property property" style="color:#2aa198">y</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> gestureState</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">dy</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">+</span><span class="token plain"> </span><span class="token number" style="color:#5a9bcf">50</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token function-variable function" style="color:#79b6f2">onPanResponderRelease</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#fc929e">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token maybe-class-name">Animated</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">timing</span><span class="token punctuation" style="color:#657b83">(</span><span class="token plain">moveOriginPan</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">toValue</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"> </span><span class="token literal-property property" style="color:#2aa198">x</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token number" style="color:#5a9bcf">150</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> </span><span class="token literal-property property" style="color:#2aa198">y</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token number" style="color:#5a9bcf">50</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">duration</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token number" style="color:#5a9bcf">600</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">easing</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token maybe-class-name">Easing</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">bounce</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">useNativeDriver</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token boolean" style="color:#ff8b50">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">)</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">start</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">)</span><span class="token punctuation" style="color:#657b83">)</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">current</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#c5a5c5">return</span><span class="token plain"> </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">GroupList.Item</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">title</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">结合动画</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">desc</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">蓝色拖拽，红色拖拽后回弹</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Svg</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">width</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript function" style="color:#79b6f2">pxNum</span><span class="token tag script language-javascript punctuation" style="color:#657b83">(</span><span class="token tag script language-javascript number" style="color:#5a9bcf">702</span><span class="token tag script language-javascript punctuation" style="color:#657b83">)</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">height</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript function" style="color:#79b6f2">pxNum</span><span class="token tag script language-javascript punctuation" style="color:#657b83">(</span><span class="token tag script language-javascript number" style="color:#5a9bcf">300</span><span class="token tag script language-javascript punctuation" style="color:#657b83">)</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Rect</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">width</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript function" style="color:#79b6f2">pxNum</span><span class="token tag script language-javascript punctuation" style="color:#657b83">(</span><span class="token tag script language-javascript number" style="color:#5a9bcf">702</span><span class="token tag script language-javascript punctuation" style="color:#657b83">)</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">height</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript function" style="color:#79b6f2">pxNum</span><span class="token tag script language-javascript punctuation" style="color:#657b83">(</span><span class="token tag script language-javascript number" style="color:#5a9bcf">300</span><span class="token tag script language-javascript punctuation" style="color:#657b83">)</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">fill</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">#fff</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag punctuation" style="color:#657b83">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">RectAnimated</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">        </span><span class="token tag attr-name" style="color:#c5a5c5">width</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">50</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">        </span><span class="token tag attr-name" style="color:#c5a5c5">height</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">50</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">        </span><span class="token tag attr-name" style="color:#c5a5c5">fill</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e">secondary</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">        </span><span class="token tag spread punctuation" style="color:#657b83">{</span><span class="token tag spread operator" style="color:#fc929e">...</span><span class="token tag spread" style="color:#fc929e">moveEvent</span><span class="token tag spread punctuation" style="color:#657b83">.</span><span class="token tag spread property-access" style="color:#fc929e">panHandlers</span><span class="token tag spread punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">        </span><span class="token tag attr-name" style="color:#c5a5c5">x</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e">movePan</span><span class="token tag script language-javascript punctuation" style="color:#657b83">.</span><span class="token tag script language-javascript property-access" style="color:#fc929e">x</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">        </span><span class="token tag attr-name" style="color:#c5a5c5">y</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e">movePan</span><span class="token tag script language-javascript punctuation" style="color:#657b83">.</span><span class="token tag script language-javascript property-access" style="color:#fc929e">y</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">      </span><span class="token tag punctuation" style="color:#657b83">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">RectAnimated</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">        </span><span class="token tag attr-name" style="color:#c5a5c5">width</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">50</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">        </span><span class="token tag attr-name" style="color:#c5a5c5">height</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">50</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">        </span><span class="token tag attr-name" style="color:#c5a5c5">fill</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e">primary</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">        </span><span class="token tag spread punctuation" style="color:#657b83">{</span><span class="token tag spread operator" style="color:#fc929e">...</span><span class="token tag spread" style="color:#fc929e">moveOriginEvent</span><span class="token tag spread punctuation" style="color:#657b83">.</span><span class="token tag spread property-access" style="color:#fc929e">panHandlers</span><span class="token tag spread punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">        </span><span class="token tag attr-name" style="color:#c5a5c5">x</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e">moveOriginPan</span><span class="token tag script language-javascript punctuation" style="color:#657b83">.</span><span class="token tag script language-javascript property-access" style="color:#fc929e">x</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">        </span><span class="token tag attr-name" style="color:#c5a5c5">y</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e">moveOriginPan</span><span class="token tag script language-javascript punctuation" style="color:#657b83">.</span><span class="token tag script language-javascript property-access" style="color:#fc929e">y</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">      </span><span class="token tag comment" style="color:#93a1a1">// translateX={moveOriginPan.x}</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">      </span><span class="token tag comment" style="color:#93a1a1">// translateY={moveOriginPan.y}</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">      </span><span class="token tag punctuation" style="color:#657b83">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Svg</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">  </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">GroupList.Item</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="转换为图片">转换为图片<a class="hash-link" aria-label="转换为图片的直接链接" title="转换为图片的直接链接" href="https://duxapp.com/blog/svg#%E8%BD%AC%E6%8D%A2%E4%B8%BA%E5%9B%BE%E7%89%87">​</a></h2>
<p>为了方便导入为图片，还封装了一个 <code>SvgToImage</code> 组件，专门将Svg导出为图片方便下一步的处理，请前往文档查看具体的使用方法</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="继续">继续<a class="hash-link" aria-label="继续的直接链接" title="继续的直接链接" href="https://duxapp.com/blog/svg#%E7%BB%A7%E7%BB%AD">​</a></h2>
<p>Svg相关功能是duxui库中提供的一个组件，详情请查看duxui文档</p>
<p>当前UI库中的<a href="https://duxapp.com/docs/duxui/show/QRCode" target="_blank" rel="noopener noreferrer">二维码(QRCode)</a>、<a href="https://duxapp.com/docs/duxui/senior/Sign" target="_blank" rel="noopener noreferrer">签名(Sign)</a> 组件都是使用这个Svg组件来实现的</p>
<p>如果你对这个项目有兴趣，可以查看文档，继续了解详情</p>
<p>Svg文档：<a href="https://duxapp.com/docs/duxui/svg" target="_blank" rel="noopener noreferrer">http://duxapp.com/docs/duxui/svg</a></p>
<p>框架文档：<a href="http://duxapp.com/" target="_blank" rel="noopener noreferrer">http://duxapp.com</a></p>
<p>GitHub：<a href="https://github.com/duxapp" target="_blank" rel="noopener noreferrer">https://github.com/duxapp</a></p>]]></content:encoded>
            <category>duxapp</category>
            <category>svg</category>
            <category>跨端绘图</category>
        </item>
        <item>
            <title><![CDATA[如何在 duxapp 中开发一个兼容 RN 的动画库]]></title>
            <link>https://duxapp.com/blog/animated</link>
            <guid>https://duxapp.com/blog/animated</guid>
            <pubDate>Tue, 10 Dec 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[Taro 一直以来都没有一个能兼容 RN 的动画方案，duxapp 中扩展了 createAnimation 方法，让这个方法兼容了 RN 端]]></description>
            <content:encoded><![CDATA[<p>Taro 一直以来都没有一个能兼容 RN 的动画方案，duxapp 中扩展了 createAnimation 方法，让这个方法兼容了 RN 端，下面让我们来看看实现思路</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="createanimation方法">createAnimation方法<a class="hash-link" aria-label="createAnimation方法的直接链接" title="createAnimation方法的直接链接" href="https://duxapp.com/blog/animated#createanimation%E6%96%B9%E6%B3%95">​</a></h2>
<p>这个方法是用来创建一个动画实例的，使用方法像下面这样，每次 step 创建一组动画，每组动画同时执行，执行完一组继续执行下一组，直到所有的动画执行完</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> an </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token function" style="color:#79b6f2">createAnimation</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">translate</span><span class="token punctuation" style="color:#657b83">(</span><span class="token number" style="color:#5a9bcf">50</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> </span><span class="token number" style="color:#5a9bcf">50</span><span class="token punctuation" style="color:#657b83">)</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">rotate</span><span class="token punctuation" style="color:#657b83">(</span><span class="token number" style="color:#5a9bcf">180</span><span class="token punctuation" style="color:#657b83">)</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">step</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">translate</span><span class="token punctuation" style="color:#657b83">(</span><span class="token number" style="color:#5a9bcf">0</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> </span><span class="token number" style="color:#5a9bcf">0</span><span class="token punctuation" style="color:#657b83">)</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">rotate</span><span class="token punctuation" style="color:#657b83">(</span><span class="token number" style="color:#5a9bcf">0</span><span class="token punctuation" style="color:#657b83">)</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">step</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">.</span><span class="token keyword module" style="color:#c5a5c5">export</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>将创建的结果设置给 View 的 <code>animation</code> 属性，这个动画就能被执行了</p>
<p>在 Taro 里面这个方法目前兼容小程序 和 H5 端，我们要实现的就是让他兼容 RN，这样后面要给我们的组件加动画就更加简单了，不用在要加动画的组件 H5 写一套，RN 再写一套</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="rn的动画方案">RN的动画方案<a class="hash-link" aria-label="RN的动画方案的直接链接" title="RN的动画方案的直接链接" href="https://duxapp.com/blog/animated#rn%E7%9A%84%E5%8A%A8%E7%94%BB%E6%96%B9%E6%A1%88">​</a></h2>
<p>RN 里面的动画和 <code>createAnimation</code> 这个方式可以说是天差地别，下面来看这个实现淡入动画的代码，这是一个官方示例</p>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token keyword module" style="color:#c5a5c5">import</span><span class="token plain"> </span><span class="token imports maybe-class-name">React</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports punctuation" style="color:#657b83">{</span><span class="token imports"> useRef</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> useEffect </span><span class="token imports punctuation" style="color:#657b83">}</span><span class="token plain"> </span><span class="token keyword module" style="color:#c5a5c5">from</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'react'</span><span class="token punctuation" style="color:#657b83">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token keyword module" style="color:#c5a5c5">import</span><span class="token plain"> </span><span class="token imports punctuation" style="color:#657b83">{</span><span class="token imports"> </span><span class="token imports maybe-class-name">Animated</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">Text</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">View</span><span class="token imports"> </span><span class="token imports punctuation" style="color:#657b83">}</span><span class="token plain"> </span><span class="token keyword module" style="color:#c5a5c5">from</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'react-native'</span><span class="token punctuation" style="color:#657b83">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> </span><span class="token function-variable function maybe-class-name" style="color:#79b6f2">FadeInView</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">(</span><span class="token parameter">props</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#fc929e">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> fadeAnim </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token function" style="color:#79b6f2">useRef</span><span class="token punctuation" style="color:#657b83">(</span><span class="token keyword" style="color:#c5a5c5">new</span><span class="token plain"> </span><span class="token class-name" style="color:#fac863">Animated</span><span class="token class-name punctuation" style="color:#657b83">.</span><span class="token class-name" style="color:#fac863">Value</span><span class="token punctuation" style="color:#657b83">(</span><span class="token number" style="color:#5a9bcf">0</span><span class="token punctuation" style="color:#657b83">)</span><span class="token punctuation" style="color:#657b83">)</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">current</span><span class="token plain">  </span><span class="token comment" style="color:#93a1a1">// 透明度初始值设为0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token maybe-class-name">React</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">useEffect</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#fc929e">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token maybe-class-name">Animated</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">timing</span><span class="token punctuation" style="color:#657b83">(</span><span class="token plain">                  </span><span class="token comment" style="color:#93a1a1">// 随时间变化而执行动画</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      fadeAnim</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain">                       </span><span class="token comment" style="color:#93a1a1">// 动画中的变量值</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">toValue</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token number" style="color:#5a9bcf">1</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain">                   </span><span class="token comment" style="color:#93a1a1">// 透明度最终变为1，即完全不透明</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">duration</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token number" style="color:#5a9bcf">10000</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain">              </span><span class="token comment" style="color:#93a1a1">// 让动画持续一段时间</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token punctuation" style="color:#657b83">)</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">start</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token punctuation" style="color:#657b83">;</span><span class="token plain">                        </span><span class="token comment" style="color:#93a1a1">// 开始执行动画</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">[</span><span class="token plain">fadeAnim</span><span class="token punctuation" style="color:#657b83">]</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#c5a5c5">return</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Animated.View</span><span class="token tag" style="color:#fc929e">                 </span><span class="token tag comment" style="color:#93a1a1">// 使用专门的可动画化的View组件</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">      </span><span class="token tag attr-name" style="color:#c5a5c5">style</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag script language-javascript" style="color:#fc929e">        </span><span class="token tag script language-javascript spread operator" style="color:#fc929e">...</span><span class="token tag script language-javascript" style="color:#fc929e">props</span><span class="token tag script language-javascript punctuation" style="color:#657b83">.</span><span class="token tag script language-javascript property-access" style="color:#fc929e">style</span><span class="token tag script language-javascript punctuation" style="color:#657b83">,</span><span class="token tag script language-javascript" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag script language-javascript" style="color:#fc929e">        </span><span class="token tag script language-javascript literal-property property" style="color:#2aa198">opacity</span><span class="token tag script language-javascript operator" style="color:#fc929e">:</span><span class="token tag script language-javascript" style="color:#fc929e"> fadeAnim</span><span class="token tag script language-javascript punctuation" style="color:#657b83">,</span><span class="token tag script language-javascript" style="color:#fc929e">         </span><span class="token tag script language-javascript comment" style="color:#93a1a1">// 将透明度绑定到动画变量值</span><span class="token tag script language-javascript" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag script language-javascript" style="color:#fc929e">      </span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">    </span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain">props</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">children</span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Animated.View</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">)</span><span class="token punctuation" style="color:#657b83">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>好在 RN 的动画库本身是很强大的，我们要做的是在 RN 端模拟实现一个 <code>createAnimation</code>, 还是有办法解决的</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="实现">实现<a class="hash-link" aria-label="实现的直接链接" title="实现的直接链接" href="https://duxapp.com/blog/animated#%E5%AE%9E%E7%8E%B0">​</a></h2>
<p>要实现 RN，我们需要两步</p>
<ul>
<li>1、编写一个类，用来模拟 <code>createAnimation</code> 方法，通过这个类创建一些动画数据</li>
<li>2、将这个类创建的数据传递给一个自定义组件，这个组件里面将这些数据解析成动画，并执行这些动画</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="创建-animation-类">创建 Animation 类<a class="hash-link" aria-label="创建 Animation 类的直接链接" title="创建 Animation 类的直接链接" href="https://duxapp.com/blog/animated#%E5%88%9B%E5%BB%BA-animation-%E7%B1%BB">​</a></h3>
<p>这个类就比较简单，模拟 createAnimation 每一个方法即可，并在 <code>export()</code> 之后生成一个数据并返回，因代码过长，下面是部分代码展示</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token keyword module" style="color:#c5a5c5">export</span><span class="token plain"> </span><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> </span><span class="token function-variable function" style="color:#79b6f2">create</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token parameter">option</span><span class="token plain"> </span><span class="token arrow operator" style="color:#fc929e">=&gt;</span><span class="token plain"> </span><span class="token keyword" style="color:#c5a5c5">new</span><span class="token plain"> </span><span class="token class-name" style="color:#fac863">Animation</span><span class="token punctuation" style="color:#657b83">(</span><span class="token plain">option</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token keyword" style="color:#c5a5c5">class</span><span class="token plain"> </span><span class="token class-name" style="color:#fac863">Animation</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token function" style="color:#79b6f2">constructor</span><span class="token punctuation" style="color:#657b83">(</span><span class="token parameter">option </span><span class="token parameter operator" style="color:#fc929e">=</span><span class="token parameter"> </span><span class="token parameter punctuation" style="color:#657b83">{</span><span class="token parameter punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token keyword control-flow" style="color:#c5a5c5">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">(</span><span class="token operator" style="color:#fc929e">!</span><span class="token plain">option</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">duration</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      option</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">duration</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token number" style="color:#5a9bcf">400</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token keyword control-flow" style="color:#c5a5c5">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">(</span><span class="token operator" style="color:#fc929e">!</span><span class="token plain">option</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">timingFunction</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      option</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">timingFunction</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'linear'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token keyword control-flow" style="color:#c5a5c5">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">(</span><span class="token operator" style="color:#fc929e">!</span><span class="token plain">option</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">delay</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      option</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">delay</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token number" style="color:#5a9bcf">0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token keyword control-flow" style="color:#c5a5c5">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">(</span><span class="token operator" style="color:#fc929e">!</span><span class="token plain">option</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">transformOrigin</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      option</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">transformOrigin</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'50% 50% 0'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token keyword" style="color:#c5a5c5">this</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">defaultOption</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> option</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  result </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">[</span><span class="token punctuation" style="color:#657b83">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  current </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword module" style="color:#c5a5c5">export</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> res </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token keyword" style="color:#c5a5c5">this</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">result</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token keyword" style="color:#c5a5c5">this</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">result</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">[</span><span class="token punctuation" style="color:#657b83">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token keyword control-flow" style="color:#c5a5c5">return</span><span class="token plain"> res</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token function" style="color:#79b6f2">step</span><span class="token punctuation" style="color:#657b83">(</span><span class="token parameter">option</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token keyword control-flow" style="color:#c5a5c5">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">(</span><span class="token known-class-name class-name" style="color:#fac863">Object</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">keys</span><span class="token punctuation" style="color:#657b83">(</span><span class="token keyword" style="color:#c5a5c5">this</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">current</span><span class="token punctuation" style="color:#657b83">)</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">length</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token keyword" style="color:#c5a5c5">this</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">result</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">push</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">option</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token spread operator" style="color:#fc929e">...</span><span class="token keyword" style="color:#c5a5c5">this</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">defaultOption</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token spread operator" style="color:#fc929e">...</span><span class="token plain">option</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">action</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token keyword" style="color:#c5a5c5">this</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">current</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token keyword" style="color:#c5a5c5">this</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">current</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token keyword control-flow" style="color:#c5a5c5">return</span><span class="token plain"> </span><span class="token keyword" style="color:#c5a5c5">this</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token function" style="color:#79b6f2">set</span><span class="token punctuation" style="color:#657b83">(</span><span class="token plain">name</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> value</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token keyword" style="color:#c5a5c5">this</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">current</span><span class="token punctuation" style="color:#657b83">[</span><span class="token plain">name</span><span class="token punctuation" style="color:#657b83">]</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> value</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token keyword control-flow" style="color:#c5a5c5">return</span><span class="token plain"> </span><span class="token keyword" style="color:#c5a5c5">this</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token function" style="color:#79b6f2">translate</span><span class="token punctuation" style="color:#657b83">(</span><span class="token parameter">x</span><span class="token parameter punctuation" style="color:#657b83">,</span><span class="token parameter"> y</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token keyword" style="color:#c5a5c5">this</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">translateX</span><span class="token punctuation" style="color:#657b83">(</span><span class="token plain">x</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token keyword control-flow" style="color:#c5a5c5">return</span><span class="token plain"> </span><span class="token keyword" style="color:#c5a5c5">this</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">translateY</span><span class="token punctuation" style="color:#657b83">(</span><span class="token plain">y</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token function" style="color:#79b6f2">translate3D</span><span class="token punctuation" style="color:#657b83">(</span><span class="token parameter">x</span><span class="token parameter punctuation" style="color:#657b83">,</span><span class="token parameter"> y</span><span class="token parameter punctuation" style="color:#657b83">,</span><span class="token parameter"> z</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token keyword" style="color:#c5a5c5">this</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">translateX</span><span class="token punctuation" style="color:#657b83">(</span><span class="token plain">x</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token keyword" style="color:#c5a5c5">this</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">translateY</span><span class="token punctuation" style="color:#657b83">(</span><span class="token plain">y</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token keyword control-flow" style="color:#c5a5c5">return</span><span class="token plain"> </span><span class="token keyword" style="color:#c5a5c5">this</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">translateZ</span><span class="token punctuation" style="color:#657b83">(</span><span class="token plain">z</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token function" style="color:#79b6f2">translateX</span><span class="token punctuation" style="color:#657b83">(</span><span class="token parameter">val</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token keyword control-flow" style="color:#c5a5c5">return</span><span class="token plain"> </span><span class="token keyword" style="color:#c5a5c5">this</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">set</span><span class="token punctuation" style="color:#657b83">(</span><span class="token string" style="color:#8dc891">'translateX'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> val</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token function" style="color:#79b6f2">translateY</span><span class="token punctuation" style="color:#657b83">(</span><span class="token parameter">val</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token keyword control-flow" style="color:#c5a5c5">return</span><span class="token plain"> </span><span class="token keyword" style="color:#c5a5c5">this</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">set</span><span class="token punctuation" style="color:#657b83">(</span><span class="token string" style="color:#8dc891">'translateY'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> val</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token function" style="color:#79b6f2">translateZ</span><span class="token punctuation" style="color:#657b83">(</span><span class="token parameter">val</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token keyword control-flow" style="color:#c5a5c5">return</span><span class="token plain"> </span><span class="token keyword" style="color:#c5a5c5">this</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">set</span><span class="token punctuation" style="color:#657b83">(</span><span class="token string" style="color:#8dc891">'translateZ'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> val</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="创建组件实现动画">创建组件实现动画<a class="hash-link" aria-label="创建组件实现动画的直接链接" title="创建组件实现动画的直接链接" href="https://duxapp.com/blog/animated#%E5%88%9B%E5%BB%BA%E7%BB%84%E4%BB%B6%E5%AE%9E%E7%8E%B0%E5%8A%A8%E7%94%BB">​</a></h3>
<p>这个地方相对会复杂一些，其中的难点有几个</p>
<ul>
<li>在小程序上的动画，是会根据 css 的默认值去执行变化的，但是 RN 上的默认值需要在动画中设置，因此，需要获取这个默认值</li>
<li>将动画拆分成适合 RN 端动画组件的 style 属性</li>
</ul>
<p>此处代码过长,可以前往 <a href="https://github.com/duxapp/duxapp" target="_blank" rel="noopener noreferrer">github</a> 查看，或者使用 duxapp 创建项目之后就能看到</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="使用">使用<a class="hash-link" aria-label="使用的直接链接" title="使用的直接链接" href="https://duxapp.com/blog/animated#%E4%BD%BF%E7%94%A8">​</a></h2>
<p>动画库写好之后我们就能给我们原有的一些组件进行改造了，例如 PullView，在这之前，这个组件是针对 RN 端和其他端写了两套代码的，现在只需要一套代码就实现了，下面的示例代码展示了这个组件动画实现方式</p>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token keyword module" style="color:#c5a5c5">import</span><span class="token plain"> </span><span class="token imports punctuation" style="color:#657b83">{</span><span class="token imports"> isValidElement</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> cloneElement</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> forwardRef</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> useState</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> useEffect</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> useRef</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> useImperativeHandle</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> useCallback </span><span class="token imports punctuation" style="color:#657b83">}</span><span class="token plain"> </span><span class="token keyword module" style="color:#c5a5c5">from</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'react'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token keyword module" style="color:#c5a5c5">import</span><span class="token plain"> </span><span class="token imports punctuation" style="color:#657b83">{</span><span class="token imports"> </span><span class="token imports maybe-class-name">View</span><span class="token imports"> </span><span class="token imports punctuation" style="color:#657b83">}</span><span class="token plain"> </span><span class="token keyword module" style="color:#c5a5c5">from</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'@tarojs/components'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token keyword module" style="color:#c5a5c5">import</span><span class="token plain"> </span><span class="token imports punctuation" style="color:#657b83">{</span><span class="token imports"> asyncTimeOut</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> nextTick</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> px</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> pxNum</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> transformStyle</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> useBackHandler </span><span class="token imports punctuation" style="color:#657b83">}</span><span class="token plain"> </span><span class="token keyword module" style="color:#c5a5c5">from</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'@/duxapp/utils'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token keyword module" style="color:#c5a5c5">import</span><span class="token plain"> </span><span class="token imports punctuation" style="color:#657b83">{</span><span class="token imports"> </span><span class="token imports maybe-class-name">Absolute</span><span class="token imports"> </span><span class="token imports punctuation" style="color:#657b83">}</span><span class="token plain"> </span><span class="token keyword module" style="color:#c5a5c5">from</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'../Absolute'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token keyword module" style="color:#c5a5c5">import</span><span class="token plain"> </span><span class="token imports punctuation" style="color:#657b83">{</span><span class="token imports"> </span><span class="token imports maybe-class-name">Animated</span><span class="token imports"> </span><span class="token imports punctuation" style="color:#657b83">}</span><span class="token plain"> </span><span class="token keyword module" style="color:#c5a5c5">from</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'../Animated'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token keyword module" style="color:#c5a5c5">import</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'./index.scss'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token keyword module" style="color:#c5a5c5">export</span><span class="token plain"> </span><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> </span><span class="token maybe-class-name">PullView</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token function" style="color:#79b6f2">forwardRef</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  side </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'bottom'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  style</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  overlayOpacity </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token number" style="color:#5a9bcf">0.5</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  children</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  masking </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token boolean" style="color:#ff8b50">true</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  group</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  onClose</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  modal</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  mask </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> modal</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  duration </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token number" style="color:#5a9bcf">200</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> ref</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#fc929e">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">[</span><span class="token plain">mainAn</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> setMainAn</span><span class="token punctuation" style="color:#657b83">]</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token function" style="color:#79b6f2">useState</span><span class="token punctuation" style="color:#657b83">(</span><span class="token maybe-class-name">Animated</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">defaultState</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">[</span><span class="token plain">maskAn</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> setMaskAn</span><span class="token punctuation" style="color:#657b83">]</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token function" style="color:#79b6f2">useState</span><span class="token punctuation" style="color:#657b83">(</span><span class="token maybe-class-name">Animated</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">defaultState</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> ans </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token function" style="color:#79b6f2">useRef</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> refs </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token function" style="color:#79b6f2">useRef</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">{</span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  refs</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">current</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">onClose</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> onClose</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  refs</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">current</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">overlayOpacity</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> overlayOpacity</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> translate </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> siteTranslates</span><span class="token punctuation" style="color:#657b83">[</span><span class="token plain">side</span><span class="token punctuation" style="color:#657b83">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> close </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token function" style="color:#79b6f2">useCallback</span><span class="token punctuation" style="color:#657b83">(</span><span class="token keyword" style="color:#c5a5c5">async</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#fc929e">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token keyword" style="color:#c5a5c5">let</span><span class="token plain"> an </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> ans</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">current</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">main</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token keyword control-flow" style="color:#c5a5c5">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">(</span><span class="token plain">side </span><span class="token operator" style="color:#fc929e">===</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'center'</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">&amp;&amp;</span><span class="token plain"> process</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">env</span><span class="token punctuation" style="color:#657b83">.</span><span class="token constant" style="color:#5a9bcf">TARO_ENV</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">!==</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'rn'</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      an </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> an</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">translate</span><span class="token punctuation" style="color:#657b83">(</span><span class="token string" style="color:#8dc891">'-50%'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'-50%'</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token function" style="color:#79b6f2">setMainAn</span><span class="token punctuation" style="color:#657b83">(</span><span class="token plain">an</span><span class="token punctuation" style="color:#657b83">[</span><span class="token plain">translate</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">key</span><span class="token punctuation" style="color:#657b83">]</span><span class="token punctuation" style="color:#657b83">(</span><span class="token function" style="color:#79b6f2">pxNum</span><span class="token punctuation" style="color:#657b83">(</span><span class="token plain">translate</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">value</span><span class="token punctuation" style="color:#657b83">)</span><span class="token punctuation" style="color:#657b83">)</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">opacity</span><span class="token punctuation" style="color:#657b83">(</span><span class="token number" style="color:#5a9bcf">0</span><span class="token punctuation" style="color:#657b83">)</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">step</span><span class="token punctuation" style="color:#657b83">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      process</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">env</span><span class="token punctuation" style="color:#657b83">.</span><span class="token constant" style="color:#5a9bcf">TARO_ENV</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">!==</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'rn'</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">?</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">transformOrigin</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'25% 25% 0'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token punctuation" style="color:#657b83">)</span><span class="token punctuation" style="color:#657b83">.</span><span class="token keyword module" style="color:#c5a5c5">export</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token function" style="color:#79b6f2">setMaskAn</span><span class="token punctuation" style="color:#657b83">(</span><span class="token plain">ans</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">current</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">mask</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">opacity</span><span class="token punctuation" style="color:#657b83">(</span><span class="token number" style="color:#5a9bcf">0</span><span class="token punctuation" style="color:#657b83">)</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">step</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token punctuation" style="color:#657b83">.</span><span class="token keyword module" style="color:#c5a5c5">export</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token keyword control-flow" style="color:#c5a5c5">await</span><span class="token plain"> </span><span class="token function" style="color:#79b6f2">asyncTimeOut</span><span class="token punctuation" style="color:#657b83">(</span><span class="token plain">duration</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    refs</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">current</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">onClose</span><span class="token operator" style="color:#fc929e">?.</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">[</span><span class="token plain">duration</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> side</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> translate</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">key</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> translate</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">value</span><span class="token punctuation" style="color:#657b83">]</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token function" style="color:#79b6f2">useBackHandler</span><span class="token punctuation" style="color:#657b83">(</span><span class="token plain">close</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">!</span><span class="token plain">mask</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token function" style="color:#79b6f2">useImperativeHandle</span><span class="token punctuation" style="color:#657b83">(</span><span class="token plain">ref</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#fc929e">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token keyword control-flow" style="color:#c5a5c5">return</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      close</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token function" style="color:#79b6f2">useEffect</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#fc929e">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token function" style="color:#79b6f2">nextTick</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#fc929e">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token keyword control-flow" style="color:#c5a5c5">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">(</span><span class="token operator" style="color:#fc929e">!</span><span class="token plain">ans</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">current</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        ans</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">current</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token literal-property property" style="color:#2aa198">main</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token maybe-class-name">Animated</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">create</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">            duration</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">            </span><span class="token literal-property property" style="color:#2aa198">timingFunction</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'ease-in-out'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">)</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token literal-property property" style="color:#2aa198">mask</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token maybe-class-name">Animated</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">create</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">            duration</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">            </span><span class="token literal-property property" style="color:#2aa198">timingFunction</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'ease-in-out'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token keyword control-flow" style="color:#c5a5c5">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">(</span><span class="token plain">side </span><span class="token operator" style="color:#fc929e">===</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'center'</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token keyword" style="color:#c5a5c5">let</span><span class="token plain"> an </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> ans</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">current</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">main</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">scale</span><span class="token punctuation" style="color:#657b83">(</span><span class="token number" style="color:#5a9bcf">1</span><span class="token punctuation" style="color:#657b83">)</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">opacity</span><span class="token punctuation" style="color:#657b83">(</span><span class="token number" style="color:#5a9bcf">1</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token keyword control-flow" style="color:#c5a5c5">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">(</span><span class="token plain">process</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">env</span><span class="token punctuation" style="color:#657b83">.</span><span class="token constant" style="color:#5a9bcf">TARO_ENV</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">!==</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'rn'</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          an </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> an</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">translateX</span><span class="token punctuation" style="color:#657b83">(</span><span class="token string" style="color:#8dc891">'-50%'</span><span class="token punctuation" style="color:#657b83">)</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">translateY</span><span class="token punctuation" style="color:#657b83">(</span><span class="token string" style="color:#8dc891">'-50%'</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token function" style="color:#79b6f2">setMainAn</span><span class="token punctuation" style="color:#657b83">(</span><span class="token plain">an</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">step</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token punctuation" style="color:#657b83">.</span><span class="token keyword module" style="color:#c5a5c5">export</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"> </span><span class="token keyword control-flow" style="color:#c5a5c5">else</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token function" style="color:#79b6f2">setMainAn</span><span class="token punctuation" style="color:#657b83">(</span><span class="token plain">ans</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">current</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">main</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">translateX</span><span class="token punctuation" style="color:#657b83">(</span><span class="token number" style="color:#5a9bcf">0</span><span class="token punctuation" style="color:#657b83">)</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">translateY</span><span class="token punctuation" style="color:#657b83">(</span><span class="token number" style="color:#5a9bcf">0</span><span class="token punctuation" style="color:#657b83">)</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">opacity</span><span class="token punctuation" style="color:#657b83">(</span><span class="token number" style="color:#5a9bcf">1</span><span class="token punctuation" style="color:#657b83">)</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">step</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token punctuation" style="color:#657b83">.</span><span class="token keyword module" style="color:#c5a5c5">export</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token function" style="color:#79b6f2">setMaskAn</span><span class="token punctuation" style="color:#657b83">(</span><span class="token plain">ans</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">current</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">mask</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">opacity</span><span class="token punctuation" style="color:#657b83">(</span><span class="token plain">refs</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">current</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">overlayOpacity</span><span class="token punctuation" style="color:#657b83">)</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">step</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token punctuation" style="color:#657b83">.</span><span class="token keyword module" style="color:#c5a5c5">export</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">[</span><span class="token plain">duration</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> side</span><span class="token punctuation" style="color:#657b83">]</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#c5a5c5">return</span><span class="token plain"> </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Absolute</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">group</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e">group</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">    </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain">masking </span><span class="token operator" style="color:#fc929e">&amp;&amp;</span><span class="token plain"> </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Animated.View</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">      </span><span class="token tag attr-name" style="color:#c5a5c5">animation</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e">maskAn</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">      </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">PullView</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">    </span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">View</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">PullView__other</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">        </span><span class="token tag attr-name" style="color:#c5a5c5">onClick</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript punctuation" style="color:#657b83">(</span><span class="token tag script language-javascript punctuation" style="color:#657b83">)</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript arrow operator" style="color:#fc929e">=&gt;</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag script language-javascript" style="color:#fc929e">          </span><span class="token tag script language-javascript keyword control-flow" style="color:#c5a5c5">if</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript punctuation" style="color:#657b83">(</span><span class="token tag script language-javascript" style="color:#fc929e">mask</span><span class="token tag script language-javascript punctuation" style="color:#657b83">)</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag script language-javascript" style="color:#fc929e">            </span><span class="token tag script language-javascript keyword control-flow" style="color:#c5a5c5">return</span><span class="token tag script language-javascript" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag script language-javascript" style="color:#fc929e">          </span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag script language-javascript" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag script language-javascript" style="color:#fc929e">          </span><span class="token tag script language-javascript function" style="color:#79b6f2">close</span><span class="token tag script language-javascript punctuation" style="color:#657b83">(</span><span class="token tag script language-javascript punctuation" style="color:#657b83">)</span><span class="token tag script language-javascript" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag script language-javascript" style="color:#fc929e">        </span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">      </span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">View</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Animated.View</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Animated.View</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">      </span><span class="token tag attr-name" style="color:#c5a5c5">animation</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e">mainAn</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">      </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript template-string template-punctuation string" style="color:#8dc891">`</span><span class="token tag script language-javascript template-string string" style="color:#8dc891">PullView__main PullView__main--</span><span class="token tag script language-javascript template-string interpolation interpolation-punctuation punctuation" style="color:#657b83">${</span><span class="token tag script language-javascript template-string interpolation" style="color:#fc929e">side</span><span class="token tag script language-javascript template-string interpolation interpolation-punctuation punctuation" style="color:#657b83">}</span><span class="token tag script language-javascript template-string template-punctuation string" style="color:#8dc891">`</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">      </span><span class="token tag attr-name" style="color:#c5a5c5">style</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag script language-javascript" style="color:#fc929e">        </span><span class="token tag script language-javascript spread operator" style="color:#fc929e">...</span><span class="token tag script language-javascript" style="color:#fc929e">style</span><span class="token tag script language-javascript punctuation" style="color:#657b83">,</span><span class="token tag script language-javascript" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag script language-javascript" style="color:#fc929e">        </span><span class="token tag script language-javascript literal-property property" style="color:#2aa198">transform</span><span class="token tag script language-javascript operator" style="color:#fc929e">:</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript function" style="color:#79b6f2">transformStyle</span><span class="token tag script language-javascript punctuation" style="color:#657b83">(</span><span class="token tag script language-javascript" style="color:#fc929e">side </span><span class="token tag script language-javascript operator" style="color:#fc929e">===</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript string" style="color:#8dc891">'center'</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript operator" style="color:#fc929e">?</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag script language-javascript" style="color:#fc929e">          </span><span class="token tag script language-javascript literal-property property" style="color:#2aa198">translateX</span><span class="token tag script language-javascript operator" style="color:#fc929e">:</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript string" style="color:#8dc891">'-50%'</span><span class="token tag script language-javascript punctuation" style="color:#657b83">,</span><span class="token tag script language-javascript" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag script language-javascript" style="color:#fc929e">          </span><span class="token tag script language-javascript literal-property property" style="color:#2aa198">translateY</span><span class="token tag script language-javascript operator" style="color:#fc929e">:</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript string" style="color:#8dc891">'-50%'</span><span class="token tag script language-javascript punctuation" style="color:#657b83">,</span><span class="token tag script language-javascript" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag script language-javascript" style="color:#fc929e">          </span><span class="token tag script language-javascript literal-property property" style="color:#2aa198">scaleX</span><span class="token tag script language-javascript operator" style="color:#fc929e">:</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript number" style="color:#5a9bcf">0.4</span><span class="token tag script language-javascript punctuation" style="color:#657b83">,</span><span class="token tag script language-javascript" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag script language-javascript" style="color:#fc929e">          </span><span class="token tag script language-javascript literal-property property" style="color:#2aa198">scaleY</span><span class="token tag script language-javascript operator" style="color:#fc929e">:</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript number" style="color:#5a9bcf">0.4</span><span class="token tag script language-javascript" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag script language-javascript" style="color:#fc929e">        </span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript operator" style="color:#fc929e">:</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag script language-javascript" style="color:#fc929e">          </span><span class="token tag script language-javascript punctuation" style="color:#657b83">[</span><span class="token tag script language-javascript" style="color:#fc929e">translate</span><span class="token tag script language-javascript punctuation" style="color:#657b83">.</span><span class="token tag script language-javascript property-access" style="color:#fc929e">key</span><span class="token tag script language-javascript punctuation" style="color:#657b83">]</span><span class="token tag script language-javascript operator" style="color:#fc929e">:</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript function" style="color:#79b6f2">px</span><span class="token tag script language-javascript punctuation" style="color:#657b83">(</span><span class="token tag script language-javascript" style="color:#fc929e">translate</span><span class="token tag script language-javascript punctuation" style="color:#657b83">.</span><span class="token tag script language-javascript property-access" style="color:#fc929e">value</span><span class="token tag script language-javascript punctuation" style="color:#657b83">)</span><span class="token tag script language-javascript" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag script language-javascript" style="color:#fc929e">        </span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag script language-javascript punctuation" style="color:#657b83">)</span><span class="token tag script language-javascript" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag script language-javascript" style="color:#fc929e">      </span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">    </span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token function" style="color:#79b6f2">isValidElement</span><span class="token punctuation" style="color:#657b83">(</span><span class="token plain">children</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">?</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token function" style="color:#79b6f2">cloneElement</span><span class="token punctuation" style="color:#657b83">(</span><span class="token plain">children</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">            </span><span class="token literal-property property" style="color:#2aa198">style</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">              </span><span class="token spread operator" style="color:#fc929e">...</span><span class="token plain">children</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">props</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">style</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">              </span><span class="token spread operator" style="color:#fc929e">...</span><span class="token punctuation" style="color:#657b83">(</span><span class="token plain">side </span><span class="token operator" style="color:#fc929e">===</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'center'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">                </span><span class="token operator" style="color:#fc929e">?</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">                </span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> side </span><span class="token operator" style="color:#fc929e">===</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'bottom'</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">||</span><span class="token plain"> side </span><span class="token operator" style="color:#fc929e">===</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'top'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">                  </span><span class="token operator" style="color:#fc929e">?</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"> </span><span class="token literal-property property" style="color:#2aa198">width</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'100%'</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">                  </span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"> </span><span class="token literal-property property" style="color:#2aa198">height</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'100%'</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">            </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          children</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Animated.View</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">  </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Absolute</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> siteTranslates </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token literal-property property" style="color:#2aa198">top</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"> </span><span class="token literal-property property" style="color:#2aa198">key</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'translateY'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> </span><span class="token literal-property property" style="color:#2aa198">value</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">-</span><span class="token number" style="color:#5a9bcf">200</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token literal-property property" style="color:#2aa198">bottom</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"> </span><span class="token literal-property property" style="color:#2aa198">key</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'translateY'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> </span><span class="token literal-property property" style="color:#2aa198">value</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token number" style="color:#5a9bcf">200</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token literal-property property" style="color:#2aa198">left</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"> </span><span class="token literal-property property" style="color:#2aa198">key</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'translateX'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> </span><span class="token literal-property property" style="color:#2aa198">value</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">-</span><span class="token number" style="color:#5a9bcf">200</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token literal-property property" style="color:#2aa198">right</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"> </span><span class="token literal-property property" style="color:#2aa198">key</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'translateX'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> </span><span class="token literal-property property" style="color:#2aa198">value</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token number" style="color:#5a9bcf">200</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token literal-property property" style="color:#2aa198">center</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"> </span><span class="token literal-property property" style="color:#2aa198">key</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'scale'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> </span><span class="token literal-property property" style="color:#2aa198">value</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token number" style="color:#5a9bcf">0.4</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="最后">最后<a class="hash-link" aria-label="最后的直接链接" title="最后的直接链接" href="https://duxapp.com/blog/animated#%E6%9C%80%E5%90%8E">​</a></h2>
<p>当然这个动画也不是完美的，只是实现了一个基础的动画，甚至使用的时候还有诸多的限制，你可以点击下面的动画文档查看详细的使用方法以及限制</p>
<p><a href="https://duxapp.com/docs/duxapp/component/Animated" target="_blank" rel="noopener noreferrer">Animated 动画文档</a></p>
<p><a href="https://duxapp.com/" target="_blank" rel="noopener noreferrer">开发文档</a><br>
<a href="https://github.com/duxapp" target="_blank" rel="noopener noreferrer">GitHub</a></p>]]></content:encoded>
            <category>duxapp</category>
            <category>动画</category>
        </item>
        <item>
            <title><![CDATA[duxapp框架是如何实现对鸿蒙的兼容，开发过程中遇到了哪些问题]]></title>
            <link>https://duxapp.com/blog/harmony-develop</link>
            <guid>https://duxapp.com/blog/harmony-develop</guid>
            <pubDate>Sun, 24 Nov 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[Taro4 支持了鸿蒙开发，duxapp 也跟进了鸿蒙端的兼容]]></description>
            <content:encoded><![CDATA[<p>Taro 4.0 版本已经搭建好了兼容鸿蒙的基础框架，duxapp 是在这个基础上进一步开发，降低了开发者上手门槛，提供了统一的 UI 库。</p>
<blockquote>
<p><a href="https://duxapp.com/" target="_blank" rel="noopener noreferrer">duxapp</a> 是一个模块化的多端开发框架，其中提供了多端 UI 库，能真正实现一套代码开发小程序、React Native、H5、鸿蒙</p>
</blockquote>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="兼容鸿蒙之前">兼容鸿蒙之前<a class="hash-link" aria-label="兼容鸿蒙之前的直接链接" title="兼容鸿蒙之前的直接链接" href="https://duxapp.com/blog/harmony-develop#%E5%85%BC%E5%AE%B9%E9%B8%BF%E8%92%99%E4%B9%8B%E5%89%8D">​</a></h2>
<p>在开始兼容鸿蒙之前，我们来讲一下，duxapp 是一个什么状况</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="1样式兼容性">1、样式兼容性<a class="hash-link" aria-label="1、样式兼容性的直接链接" title="1、样式兼容性的直接链接" href="https://duxapp.com/blog/harmony-develop#1%E6%A0%B7%E5%BC%8F%E5%85%BC%E5%AE%B9%E6%80%A7">​</a></h3>
<p>现在 duxapp 已经兼容 小程序、React Native以及H5了，因为 React Native 端在这些端中兼容的样式是最少的，我们是按照React Native的标准去做，我们针对 H5 端和 小程序端的基础样式做了调整</p>
<p>需要将 View 组件调整为默认 Flex 竖向布局、默认的定位方式、模型盒、以及边框等，像下面这样：</p>
<div class="language-css codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-css codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token comment" style="color:#93a1a1">/* H5 端 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token selector" style="color:#2aa198">taro-view-core</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token property" style="color:#2aa198">display</span><span class="token punctuation" style="color:#657b83">:</span><span class="token plain"> flex</span><span class="token punctuation" style="color:#657b83">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token property" style="color:#2aa198">flex-direction</span><span class="token punctuation" style="color:#657b83">:</span><span class="token plain"> column</span><span class="token punctuation" style="color:#657b83">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token property" style="color:#2aa198">position</span><span class="token punctuation" style="color:#657b83">:</span><span class="token plain"> relative</span><span class="token punctuation" style="color:#657b83">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token property" style="color:#2aa198">border-style</span><span class="token punctuation" style="color:#657b83">:</span><span class="token plain"> solid</span><span class="token punctuation" style="color:#657b83">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token property" style="color:#2aa198">border-width</span><span class="token punctuation" style="color:#657b83">:</span><span class="token plain"> </span><span class="token number" style="color:#5a9bcf">0</span><span class="token punctuation" style="color:#657b83">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token selector" style="color:#2aa198">input</span><span class="token selector punctuation" style="color:#657b83">,</span><span class="token selector" style="color:#2aa198"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token selector" style="color:#2aa198">textarea</span><span class="token selector punctuation" style="color:#657b83">,</span><span class="token selector" style="color:#2aa198"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token selector" style="color:#2aa198">taro-view-core</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token property" style="color:#2aa198">box-sizing</span><span class="token punctuation" style="color:#657b83">:</span><span class="token plain"> border-box</span><span class="token punctuation" style="color:#657b83">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token comment" style="color:#93a1a1">/* 小程序端 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token selector" style="color:#2aa198">view</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token property" style="color:#2aa198">display</span><span class="token punctuation" style="color:#657b83">:</span><span class="token plain"> flex</span><span class="token punctuation" style="color:#657b83">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token property" style="color:#2aa198">flex-direction</span><span class="token punctuation" style="color:#657b83">:</span><span class="token plain"> column</span><span class="token punctuation" style="color:#657b83">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token property" style="color:#2aa198">position</span><span class="token punctuation" style="color:#657b83">:</span><span class="token plain"> relative</span><span class="token punctuation" style="color:#657b83">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token property" style="color:#2aa198">border-style</span><span class="token punctuation" style="color:#657b83">:</span><span class="token plain"> solid</span><span class="token punctuation" style="color:#657b83">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token property" style="color:#2aa198">border-width</span><span class="token punctuation" style="color:#657b83">:</span><span class="token plain"> </span><span class="token number" style="color:#5a9bcf">0</span><span class="token punctuation" style="color:#657b83">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token selector" style="color:#2aa198">input</span><span class="token selector punctuation" style="color:#657b83">,</span><span class="token selector" style="color:#2aa198"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token selector" style="color:#2aa198">textarea</span><span class="token selector punctuation" style="color:#657b83">,</span><span class="token selector" style="color:#2aa198"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token selector" style="color:#2aa198">view</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token property" style="color:#2aa198">box-sizing</span><span class="token punctuation" style="color:#657b83">:</span><span class="token plain"> border-box</span><span class="token punctuation" style="color:#657b83">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>通过这样的调整，我们在项目中使用 View 组件的时候将默认使用 Flex 竖向布局，这样编写的 css 就能做到同时兼容多个端了</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="2现有模块">2、现有模块<a class="hash-link" aria-label="2、现有模块的直接链接" title="2、现有模块的直接链接" href="https://duxapp.com/blog/harmony-develop#2%E7%8E%B0%E6%9C%89%E6%A8%A1%E5%9D%97">​</a></h3>
<p>duxapp 框架中现在已提供了很多的公开模块了，这里介绍三个相关的基础模块，这三个模块在我们兼容鸿蒙的过程中都有很大的关联</p>
<ul>
<li>duxapp</li>
</ul>
<p>这个和框架名称相同的模块，是所有模块的根模块，所有的模块都需要依赖于这个模块</p>
<p>这个模块内提供了一些非常基础的组件、函数、配置等，且一些东西是必须使用的</p>
<blockquote>
<p>用来包裹页面的容器组件 <code>TopView</code><br>
<!-- -->路由跳转函数 <code>route</code><br>
<!-- -->导出的用户配置</p>
</blockquote>
<ul>
<li>duxui</li>
</ul>
<p>这个是提供的UI组件库，模块内提供了大量兼容多端的组件库，使用这些组件，能快速开发出兼容多端的应用</p>
<ul>
<li>duxappReactNative</li>
</ul>
<p>React Native端支持，要兼容 React Native，必须使用这个模块，模块内有 React Native 端的三方依赖、用户协议、版本更新、权限管理等</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="taro-和鸿蒙的现状">Taro 和鸿蒙的现状<a class="hash-link" aria-label="Taro 和鸿蒙的现状的直接链接" title="Taro 和鸿蒙的现状的直接链接" href="https://duxapp.com/blog/harmony-develop#taro-%E5%92%8C%E9%B8%BF%E8%92%99%E7%9A%84%E7%8E%B0%E7%8A%B6">​</a></h2>
<p>Taro 4.0 目前有两套实现鸿蒙的方案</p>
<ul>
<li>@tarojs/plugin-platform-harmony-hybrid</li>
</ul>
<p>webview方案，将 H5 运行在 webview 上，和小程序类似</p>
<ul>
<li>@tarojs/plugin-platform-harmony-ets</li>
</ul>
<blockquote>
<p>duxapp 中为了更好的性能和体验，选择的的是这个方案</p>
</blockquote>
<p>底层通过 arkts 以及 arkui 实现，将 Taro 的组件转化为对应的 arkui 里面对应的组件，并实现了 React 的运行时</p>
<p>例如 <code>View</code> 组件会通过 arkui 的 <code>Flex</code>、<code>Row</code>、<code>Column</code> 这三个组件来实现，会根据编写的不同样式选择不同的原生组件去渲染，从这里也大概能看出，鸿蒙的 arkui 里面也是 Flex 布局</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="兼容过程">兼容过程<a class="hash-link" aria-label="兼容过程的直接链接" title="兼容过程的直接链接" href="https://duxapp.com/blog/harmony-develop#%E5%85%BC%E5%AE%B9%E8%BF%87%E7%A8%8B">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="1创建一个鸿蒙模块">1、创建一个鸿蒙模块<a class="hash-link" aria-label="1、创建一个鸿蒙模块的直接链接" title="1、创建一个鸿蒙模块的直接链接" href="https://duxapp.com/blog/harmony-develop#1%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E9%B8%BF%E8%92%99%E6%A8%A1%E5%9D%97">​</a></h3>
<p>就像上面介绍的 React Native 端那样，鸿蒙端也需要创建一个模块，用来处理鸿蒙端的基础内容，例如用到的三方依赖、配置插件等</p>
<p>这个模块的名称为 <code>duxappHarmony</code></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="2添加需要的三方依赖">2、添加需要的三方依赖<a class="hash-link" aria-label="2、添加需要的三方依赖的直接链接" title="2、添加需要的三方依赖的直接链接" href="https://duxapp.com/blog/harmony-develop#2%E6%B7%BB%E5%8A%A0%E9%9C%80%E8%A6%81%E7%9A%84%E4%B8%89%E6%96%B9%E4%BE%9D%E8%B5%96">​</a></h3>
<p>目前鸿蒙端仅支持使用 <code>vite</code> 编译，因此鸿蒙端需要添加编译的相关的依赖，在模块内创建 <code>package.json</code>，内容如下</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token property" style="color:#2aa198">"scripts"</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token property" style="color:#2aa198">"build:harmony"</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">"duxapp runtime enterFile &amp;&amp; duxapp harmony create &amp;&amp; taro build --type harmony"</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token property" style="color:#2aa198">"dev:harmony"</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">"npm run build:harmony -- --watch"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token property" style="color:#2aa198">"dependencies"</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token property" style="color:#2aa198">"@tarojs/plugin-platform-harmony-ets"</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">"4.0.7"</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token property" style="color:#2aa198">"vite"</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">"^5.4.10"</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token property" style="color:#2aa198">"terser"</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">"^5.36.0"</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token property" style="color:#2aa198">"@tarojs/vite-runner"</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">"4.0.5"</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token property" style="color:#2aa198">"@vitejs/plugin-react"</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">"^4.3.3"</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token property" style="color:#2aa198">"vite-plugin-commonjs"</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">"^0.10.3"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>这个完整的文件中还包含了编译鸿蒙的两个命令</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="3配置依赖项">3、配置依赖项<a class="hash-link" aria-label="3、配置依赖项的直接链接" title="3、配置依赖项的直接链接" href="https://duxapp.com/blog/harmony-develop#3%E9%85%8D%E7%BD%AE%E4%BE%9D%E8%B5%96%E9%A1%B9">​</a></h3>
<p>添加了依赖这些依赖并不会自动起作用，需要配置 Taro 编译配置，我们在这个模块内创建一个 Taro 的配置文件 <code>taro.config.js</code>，内容如下</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token keyword module" style="color:#c5a5c5">import</span><span class="token plain"> </span><span class="token imports">commonjs</span><span class="token plain"> </span><span class="token keyword module" style="color:#c5a5c5">from</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'vite-plugin-commonjs'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token keyword module" style="color:#c5a5c5">export</span><span class="token plain"> </span><span class="token keyword module" style="color:#c5a5c5">default</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token comment" style="color:#93a1a1">// 鸿蒙编译插件</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token literal-property property" style="color:#2aa198">plugins</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token string" style="color:#8dc891">'@tarojs/plugin-platform-harmony-ets'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">]</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token literal-property property" style="color:#2aa198">harmony</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token literal-property property" style="color:#2aa198">compiler</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token comment" style="color:#93a1a1">// 指定 vite 编译</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token literal-property property" style="color:#2aa198">type</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'vite'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token literal-property property" style="color:#2aa198">vitePlugins</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token function" style="color:#79b6f2">commonjs</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token punctuation" style="color:#657b83">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token literal-property property" style="color:#2aa198">projectPath</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'./dist/harmony'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>这里面配置了平台插件、指定使用 vite 编译、设置了项目目录</p>
<blockquote>
<p>这其中还加入了一个 vite 插件，因为 vite 默认不支持 commonjs，但是 duxapp 项目中使用了commonjs，所以加入了这个插件</p>
</blockquote>
<p>到此基础环境配置好了，但是我们还需要创建鸿蒙工程文件，Taro 没有提供这个内容</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="4在cli内处理鸿蒙工程文件">4、在cli内处理鸿蒙工程文件<a class="hash-link" aria-label="4、在cli内处理鸿蒙工程文件的直接链接" title="4、在cli内处理鸿蒙工程文件的直接链接" href="https://duxapp.com/blog/harmony-develop#4%E5%9C%A8cli%E5%86%85%E5%A4%84%E7%90%86%E9%B8%BF%E8%92%99%E5%B7%A5%E7%A8%8B%E6%96%87%E4%BB%B6">​</a></h3>
<p>在第 2 步的命令中，<code>duxapp harmony create</code> 有这个命令，我们就是通过这个命令来创建的鸿蒙工程文件，这样就不需要再通过鸿蒙的 IDE 再去手动操作创建了，这也是一个相对麻烦的过程</p>
<p>这个过程和 React Native 端是类似的，React Native端也是自动创建安卓和 ios 的工程文件，鸿蒙的工程文件创建会放在 <code>dist/harmony</code> 目录中</p>
<p>创建工程文件的过程中，可以通过配置或脚本对工程文件进行处理，例如鸿蒙端需要包名、版本号、app 名称等信息，都是通过配置文件来生成的</p>
<p>这里就不详细展开了，可以查看文档了解 <a href="https://duxapp.com/docs/course/harmony/start" target="_blank" rel="noopener noreferrer">鸿蒙入门文档</a></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="5组件库兼容">5、组件库兼容<a class="hash-link" aria-label="5、组件库兼容的直接链接" title="5、组件库兼容的直接链接" href="https://duxapp.com/blog/harmony-develop#5%E7%BB%84%E4%BB%B6%E5%BA%93%E5%85%BC%E5%AE%B9">​</a></h3>
<p>上面的步骤处理完之后，框架的东西就处理完了，但是仍然是不可用的，因为要编写一个兼容多端的项目，现有的组件，还需要针对鸿蒙端做相应的兼容，要兼容的组件包括基础模块中的组件和 duxui 模块中的组件</p>
<p>鸿蒙端兼容是一个很费事的过程，对鸿蒙端的兼容性 React Native还难，难就难在，鸿蒙有一个非标准的 Flex</p>
<p>在上面介绍了 <code>View</code> 组件会被在不同的情况编译的 <code>Flex</code> <code>Row</code> <code>Column</code>，具体来说，</p>
<ul>
<li>当 <code>align-items</code> 的属性值为 <code>stretch</code>、<code>daseline</code> 或者 <code>flex-wrap</code> 的属性值为 <code>wrap</code>会使用 <code>Flex</code> 组件</li>
<li>否则当 <code>flex-direction</code> 为 <code>row</code> 或者 <code>row-reverse</code> 使用 <code>Row</code> 组件</li>
<li>其他的情况使用 <code>Column</code> 组件</li>
</ul>
<p>因为鸿蒙的 <code>Row</code> 和 <code>Column</code> 组件的<code>align-items</code>不支持 <code>stretch</code>和<code>daseline</code>，而 <code>Row</code>组件又不支持 <code>wrap</code> 换行</p>
<p>在使用 <code>Row</code> 或者 <code>Column</code> 的情况下，这和标准 Flex 布局基本没多大差别，问题就出在使用 Flex 组件这，这个组件有个奇怪的特性</p>
<blockquote>
<p>Flex组件主轴默认不设置时撑满父容器，Column、Row组件主轴不设置时默认是跟随子节点大小。</p>
</blockquote>
<p>这是官方文档的描述，这是一个很奇怪的特性，且没有办法通过设置取消，这导致很多奇怪的布局行为，这个效果类似于给元素永久设置了个 <code>flex: 1</code>，且比这个好厉害，就算有多层父元素，他也能把外层父元素撑开，感觉它才是爹！</p>
<p>在做兼容的时候，我总结了关于这个特性的兼容方式：</p>
<blockquote>
<p>当 flex 的 alitn-items 为 stretch 或者 daseline 时，需要给当前元素指定尺寸，在任何能不用 alitn-items 的这两个属性的时候，都不要用这两个属性。如果要使用stretch，建议父元素使用 alitn-items: flex-start，子元素使用 align-self: stretch，这样的形式</p>
</blockquote>
<p>当然，除了 Flex 布局这个最大的问题之外，还有很多与标准不太一样的地方，我整理总结了放在 <a href="https://duxapp.com/docs/course/harmony/compatible" target="_blank" rel="noopener noreferrer">兼容性章节</a>，在开发的时候需要特别注意</p>
<p>可以说我在兼容鸿蒙的过程中，大部分时间都是在做组件库的兼容，和这些样式斗智斗勇</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="开始使用">开始使用<a class="hash-link" aria-label="开始使用的直接链接" title="开始使用的直接链接" href="https://duxapp.com/blog/harmony-develop#%E5%BC%80%E5%A7%8B%E4%BD%BF%E7%94%A8">​</a></h2>
<p>通过上面这一系列的操作，duxapp 框架已经基本实现了兼容鸿蒙，且提供了大量可用的 UI 组件库</p>
<p>你可以快速初始化一个 UI 库的示例项目，你可以通过这个示例项目快速的查看到 UI 库在鸿蒙端以及其他端的效果</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token plain">npx duxapp-cli create projectExample duxuiExample</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<blockquote>
<p>在运行这个命令之前，你需要安装好 <code>nodejs 20+</code> <code>yarn</code> <code>git</code></p>
</blockquote>
<p>创建项目后，进入项目运行以下命令</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token function" style="color:#79b6f2">yarn</span><span class="token plain"> dev:harmony </span><span class="token parameter variable" style="color:#cb4b16">--app</span><span class="token operator" style="color:#fc929e">=</span><span class="token plain">duxuiExample</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>编译完成后，使用 DevEco Studio 打开 dist/harmony 目录，这个目录就是一个原生鸿蒙项目</p>
<p>打开项目后，右上角工具栏区域，选择已经开启的虚拟机，并且点击右侧的运行按钮（三角符号），开始编译，编译后，会自动在虚拟机上启动这个 app</p>
<p>如果想继续开发项目，请查看<a href="https://duxapp.com/docs/course/harmony/start" target="_blank" rel="noopener noreferrer">鸿蒙入门文档</a></p>
<blockquote>
<p>当前版本在 windows 系统上，仍然存在问题，能编译成功，但是启动 app 会报错，你可以先尝试使用其他系统进行编译，例如 Mac，这个问题将会在不久后修复</p>
</blockquote>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="未来展望">未来展望<a class="hash-link" aria-label="未来展望的直接链接" title="未来展望的直接链接" href="https://duxapp.com/blog/harmony-develop#%E6%9C%AA%E6%9D%A5%E5%B1%95%E6%9C%9B">​</a></h2>
<p>目前对鸿蒙的兼容取得了初步的成效，但是也还有少数一些组件和功能还未实现兼容，像下面这些，将逐步完善这些组件或功能</p>
<ul>
<li>PullView Modal 等组件动画效果</li>
<li>Picker 组件暂不支持</li>
<li>Sign 签名组件待完善</li>
<li>录音组件录音功能待完善</li>
<li>微信模块相关功能暂不支持</li>
<li>地图暂不支持</li>
<li>List、Detail 组件待完善</li>
</ul>
<p>Taro 目前开发中的版本，将放弃使用鸿蒙的 Flex 布局方式，转而使用更底层的实现方式，使用了 React Native 的布局引擎 <code>Yoga</code>，用过 Yoga 引擎来来布局，将引擎的计算结果再赋值到具体的组件上，这样就能极大改善鸿蒙布局兼容性问题，等待 Taro 的这套方案开源后，duxapp 也将跟进</p>
<p>如果你有兴趣，请继续查看文档了解详情吧</p>
<p><a href="https://duxapp.com/" target="_blank" rel="noopener noreferrer">开发文档</a><br>
<a href="https://github.com/duxapp" target="_blank" rel="noopener noreferrer">GitHub</a></p>]]></content:encoded>
            <category>duxapp</category>
            <category>harmony</category>
            <category>UI库</category>
            <category>鸿蒙</category>
        </item>
        <item>
            <title><![CDATA[Taro首个支持鸿蒙的 UI 库，同时还兼容 React Native、小程序、H5]]></title>
            <link>https://duxapp.com/blog/harmony</link>
            <guid>https://duxapp.com/blog/harmony</guid>
            <pubDate>Mon, 18 Nov 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[Taro4 支持了鸿蒙开发，duxapp 也跟进了鸿蒙端的兼容]]></description>
            <content:encoded><![CDATA[<p>Taro 4.0 已经推出一段时间了，4.0 版本主要是支持了鸿蒙端的开发以及 Vite 编译工具的支持。duxapp 在这段时间也跟随 Taro 的脚步，实现的对鸿蒙端的支持，并且也将之前的 duxui 这个多端的 UI 库，对鸿蒙端实现了兼容。</p>
<p>duxui 组件库提供了 60+ 的组件支持，能快速帮助你完成业务。</p>
<p>现在使用这个 UI 库，不仅能开发鸿蒙，还能实现同时开发 React Native、小程序和 H5，也是目前唯一一个能兼容这么多端的 UI 库。</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="组件展示">组件展示<a class="hash-link" aria-label="组件展示的直接链接" title="组件展示的直接链接" href="https://duxapp.com/blog/harmony#%E7%BB%84%E4%BB%B6%E5%B1%95%E7%A4%BA">​</a></h2>
<p><img decoding="async" loading="lazy" alt="效果图" src="https://duxapp.com/assets/images/duxui-7708652baa055ffa6122759ff122c205.jpg" width="2240" height="1520" class="img_ev3q"></p>
<p>下面我将介绍这一切是如何做到的，这其中遇到了哪些问题</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="兼容鸿蒙之前">兼容鸿蒙之前<a class="hash-link" aria-label="兼容鸿蒙之前的直接链接" title="兼容鸿蒙之前的直接链接" href="https://duxapp.com/blog/harmony#%E5%85%BC%E5%AE%B9%E9%B8%BF%E8%92%99%E4%B9%8B%E5%89%8D">​</a></h2>
<p>在开始兼容鸿蒙之前，我们来讲一下，duxapp 是一个什么状况</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="1样式兼容性">1、样式兼容性<a class="hash-link" aria-label="1、样式兼容性的直接链接" title="1、样式兼容性的直接链接" href="https://duxapp.com/blog/harmony#1%E6%A0%B7%E5%BC%8F%E5%85%BC%E5%AE%B9%E6%80%A7">​</a></h3>
<p>现在 duxapp 已经兼容 小程序、React Native以及H5了，因为 React Native 端在这些端中兼容的样式是最少的，我们是按照React Native的标准去做，我们针对 H5 端和 小程序端的基础样式做了调整</p>
<p>需要将 View 组件调整为默认 Flex 竖向布局、默认的定位方式、模型盒、以及边框等，像下面这样：</p>
<div class="language-css codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-css codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token comment" style="color:#93a1a1">/* H5 端 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token selector" style="color:#2aa198">taro-view-core</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token property" style="color:#2aa198">display</span><span class="token punctuation" style="color:#657b83">:</span><span class="token plain"> flex</span><span class="token punctuation" style="color:#657b83">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token property" style="color:#2aa198">flex-direction</span><span class="token punctuation" style="color:#657b83">:</span><span class="token plain"> column</span><span class="token punctuation" style="color:#657b83">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token property" style="color:#2aa198">position</span><span class="token punctuation" style="color:#657b83">:</span><span class="token plain"> relative</span><span class="token punctuation" style="color:#657b83">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token property" style="color:#2aa198">border-style</span><span class="token punctuation" style="color:#657b83">:</span><span class="token plain"> solid</span><span class="token punctuation" style="color:#657b83">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token property" style="color:#2aa198">border-width</span><span class="token punctuation" style="color:#657b83">:</span><span class="token plain"> </span><span class="token number" style="color:#5a9bcf">0</span><span class="token punctuation" style="color:#657b83">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token selector" style="color:#2aa198">input</span><span class="token selector punctuation" style="color:#657b83">,</span><span class="token selector" style="color:#2aa198"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token selector" style="color:#2aa198">textarea</span><span class="token selector punctuation" style="color:#657b83">,</span><span class="token selector" style="color:#2aa198"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token selector" style="color:#2aa198">taro-view-core</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token property" style="color:#2aa198">box-sizing</span><span class="token punctuation" style="color:#657b83">:</span><span class="token plain"> border-box</span><span class="token punctuation" style="color:#657b83">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token comment" style="color:#93a1a1">/* 小程序端 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token selector" style="color:#2aa198">view</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token property" style="color:#2aa198">display</span><span class="token punctuation" style="color:#657b83">:</span><span class="token plain"> flex</span><span class="token punctuation" style="color:#657b83">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token property" style="color:#2aa198">flex-direction</span><span class="token punctuation" style="color:#657b83">:</span><span class="token plain"> column</span><span class="token punctuation" style="color:#657b83">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token property" style="color:#2aa198">position</span><span class="token punctuation" style="color:#657b83">:</span><span class="token plain"> relative</span><span class="token punctuation" style="color:#657b83">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token property" style="color:#2aa198">border-style</span><span class="token punctuation" style="color:#657b83">:</span><span class="token plain"> solid</span><span class="token punctuation" style="color:#657b83">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token property" style="color:#2aa198">border-width</span><span class="token punctuation" style="color:#657b83">:</span><span class="token plain"> </span><span class="token number" style="color:#5a9bcf">0</span><span class="token punctuation" style="color:#657b83">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token selector" style="color:#2aa198">input</span><span class="token selector punctuation" style="color:#657b83">,</span><span class="token selector" style="color:#2aa198"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token selector" style="color:#2aa198">textarea</span><span class="token selector punctuation" style="color:#657b83">,</span><span class="token selector" style="color:#2aa198"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token selector" style="color:#2aa198">view</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token property" style="color:#2aa198">box-sizing</span><span class="token punctuation" style="color:#657b83">:</span><span class="token plain"> border-box</span><span class="token punctuation" style="color:#657b83">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>通过这样的调整，我们在项目中使用 View 组件的时候将默认使用 Flex 竖向布局，这样编写的 css 就能做到同时兼容多个端了</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="2现有模块">2、现有模块<a class="hash-link" aria-label="2、现有模块的直接链接" title="2、现有模块的直接链接" href="https://duxapp.com/blog/harmony#2%E7%8E%B0%E6%9C%89%E6%A8%A1%E5%9D%97">​</a></h3>
<p>duxapp 框架中现在已提供了很多的公开模块了，这里介绍三个相关的基础模块，这三个模块在我们兼容鸿蒙的过程中都有很大的关联</p>
<ul>
<li>duxapp</li>
</ul>
<p>这个和框架名称相同的模块，是所有模块的根模块，所有的模块都需要依赖于这个模块</p>
<p>这个模块内提供了一些非常基础的组件、函数、配置等，且一些东西是必须使用的</p>
<blockquote>
<p>用来包裹页面的容器组件 <code>TopView</code><br>
<!-- -->路由跳转函数 <code>route</code><br>
<!-- -->导出的用户配置</p>
</blockquote>
<ul>
<li>duxui</li>
</ul>
<p>这个是提供的UI组件库，模块内提供了大量兼容多端的组件库，使用这些组件，能快速开发出兼容多端的应用</p>
<ul>
<li>duxappReactNative</li>
</ul>
<p>React Native端支持，要兼容 React Native，必须使用这个模块，模块内有 React Native 端的三方依赖、用户协议、版本更新、权限管理等</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="taro-和鸿蒙的现状">Taro 和鸿蒙的现状<a class="hash-link" aria-label="Taro 和鸿蒙的现状的直接链接" title="Taro 和鸿蒙的现状的直接链接" href="https://duxapp.com/blog/harmony#taro-%E5%92%8C%E9%B8%BF%E8%92%99%E7%9A%84%E7%8E%B0%E7%8A%B6">​</a></h2>
<p>Taro 4.0 目前有两套实现鸿蒙的方案</p>
<ul>
<li>@tarojs/plugin-platform-harmony-hybrid</li>
</ul>
<p>webview方案，将 H5 运行在 webview 上，和小程序类似</p>
<ul>
<li>@tarojs/plugin-platform-harmony-ets</li>
</ul>
<blockquote>
<p>duxapp 中为了更好的性能和体验，选择的的是这个方案</p>
</blockquote>
<p>底层通过 arkts 以及 arkui 实现，将 Taro 的组件转化为对应的 arkui 里面对应的组件，并实现了 React 的运行时</p>
<p>例如 <code>View</code> 组件会通过 arkui 的 <code>Flex</code>、<code>Row</code>、<code>Column</code> 这三个组件来实现，会根据编写的不同样式选择不同的原生组件去渲染，从这里也大概能看出，鸿蒙的 arkui 里面也是 Flex 布局</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="兼容过程">兼容过程<a class="hash-link" aria-label="兼容过程的直接链接" title="兼容过程的直接链接" href="https://duxapp.com/blog/harmony#%E5%85%BC%E5%AE%B9%E8%BF%87%E7%A8%8B">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="1创建一个鸿蒙模块">1、创建一个鸿蒙模块<a class="hash-link" aria-label="1、创建一个鸿蒙模块的直接链接" title="1、创建一个鸿蒙模块的直接链接" href="https://duxapp.com/blog/harmony#1%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E9%B8%BF%E8%92%99%E6%A8%A1%E5%9D%97">​</a></h3>
<p>就像上面介绍的 React Native 端那样，鸿蒙端也需要创建一个模块，用来处理鸿蒙端的基础内容，例如用到的三方依赖、配置插件等</p>
<p>这个模块的名称为 <code>duxappHarmony</code></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="2添加需要的三方依赖">2、添加需要的三方依赖<a class="hash-link" aria-label="2、添加需要的三方依赖的直接链接" title="2、添加需要的三方依赖的直接链接" href="https://duxapp.com/blog/harmony#2%E6%B7%BB%E5%8A%A0%E9%9C%80%E8%A6%81%E7%9A%84%E4%B8%89%E6%96%B9%E4%BE%9D%E8%B5%96">​</a></h3>
<p>目前鸿蒙端仅支持使用 <code>vite</code> 编译，因此鸿蒙端需要添加编译的相关的依赖，在模块内创建 <code>package.json</code>，内容如下</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token property" style="color:#2aa198">"scripts"</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token property" style="color:#2aa198">"build:harmony"</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">"duxapp runtime enterFile &amp;&amp; duxapp harmony create &amp;&amp; taro build --type harmony"</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token property" style="color:#2aa198">"dev:harmony"</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">"npm run build:harmony -- --watch"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token property" style="color:#2aa198">"dependencies"</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token property" style="color:#2aa198">"@tarojs/plugin-platform-harmony-ets"</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">"4.0.7"</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token property" style="color:#2aa198">"vite"</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">"^5.4.10"</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token property" style="color:#2aa198">"terser"</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">"^5.36.0"</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token property" style="color:#2aa198">"@tarojs/vite-runner"</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">"4.0.5"</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token property" style="color:#2aa198">"@vitejs/plugin-react"</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">"^4.3.3"</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token property" style="color:#2aa198">"vite-plugin-commonjs"</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">"^0.10.3"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>这个完整的文件中还包含了编译鸿蒙的两个命令</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="3配置依赖项">3、配置依赖项<a class="hash-link" aria-label="3、配置依赖项的直接链接" title="3、配置依赖项的直接链接" href="https://duxapp.com/blog/harmony#3%E9%85%8D%E7%BD%AE%E4%BE%9D%E8%B5%96%E9%A1%B9">​</a></h3>
<p>添加了依赖这些依赖并不会自动起作用，需要配置 Taro 编译配置，我们在这个模块内创建一个 Taro 的配置文件 <code>taro.config.js</code>，内容如下</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token comment" style="color:#93a1a1">// eslint-disable-next-line import/no-commonjs</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> commonjs </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token function" style="color:#79b6f2">require</span><span class="token punctuation" style="color:#657b83">(</span><span class="token string" style="color:#8dc891">'vite-plugin-commonjs'</span><span class="token punctuation" style="color:#657b83">)</span><span class="token punctuation" style="color:#657b83">.</span><span class="token keyword module" style="color:#c5a5c5">default</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token keyword module" style="color:#c5a5c5">export</span><span class="token plain"> </span><span class="token keyword module" style="color:#c5a5c5">default</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token comment" style="color:#93a1a1">// 鸿蒙编译插件</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token literal-property property" style="color:#2aa198">plugins</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token string" style="color:#8dc891">'@tarojs/plugin-platform-harmony-ets'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">]</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token literal-property property" style="color:#2aa198">harmony</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token literal-property property" style="color:#2aa198">compiler</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token comment" style="color:#93a1a1">// 指定 vite 编译</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token literal-property property" style="color:#2aa198">type</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'vite'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token literal-property property" style="color:#2aa198">vitePlugins</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token function" style="color:#79b6f2">commonjs</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token punctuation" style="color:#657b83">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token literal-property property" style="color:#2aa198">projectPath</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'./dist/harmony'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>这里面配置了平台插件、指定使用 vite 编译、设置了项目目录</p>
<blockquote>
<p>这其中还加入了一个 vite 插件，因为 vite 默认不支持 commonjs，但是 duxapp 项目中使用了commonjs，所以加入了这个插件</p>
</blockquote>
<p>到此基础环境配置好了，但是我们还需要创建鸿蒙工程文件，Taro 没有提供这个内容</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="4在cli内处理鸿蒙工程文件">4、在cli内处理鸿蒙工程文件<a class="hash-link" aria-label="4、在cli内处理鸿蒙工程文件的直接链接" title="4、在cli内处理鸿蒙工程文件的直接链接" href="https://duxapp.com/blog/harmony#4%E5%9C%A8cli%E5%86%85%E5%A4%84%E7%90%86%E9%B8%BF%E8%92%99%E5%B7%A5%E7%A8%8B%E6%96%87%E4%BB%B6">​</a></h3>
<p>在第 2 步的命令中，<code>duxapp harmony create</code> 有这个命令，我们就是通过这个命令来创建的鸿蒙工程文件，这样就不需要再通过鸿蒙的 IDE 再去手动操作创建了，这也是一个相对麻烦的过程</p>
<p>这个过程和 React Native 端是类似的，React Native端也是自动创建安卓和 ios 的工程文件，鸿蒙的工程文件创建会放在 <code>dist/harmony</code> 目录中</p>
<p>创建工程文件的过程中，可以通过配置或脚本对工程文件进行处理，例如鸿蒙端需要包名、版本号、app 名称等信息，都是通过配置文件来生成的</p>
<p>这里就不详细展开了，可以查看文档了解 <a href="https://duxapp.com/docs/course/harmony/start" target="_blank" rel="noopener noreferrer">鸿蒙入门文档</a></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="5组件库兼容">5、组件库兼容<a class="hash-link" aria-label="5、组件库兼容的直接链接" title="5、组件库兼容的直接链接" href="https://duxapp.com/blog/harmony#5%E7%BB%84%E4%BB%B6%E5%BA%93%E5%85%BC%E5%AE%B9">​</a></h3>
<p>上面的步骤处理完之后，框架的东西就处理完了，但是仍然是不可用的，因为要编写一个兼容多端的项目，现有的组件，还需要针对鸿蒙端做相应的兼容，要兼容的组件包括基础模块中的组件和 duxui 模块中的组件</p>
<p>鸿蒙端兼容是一个很费事的过程，对鸿蒙端的兼容性 React Native还难，难就难在，鸿蒙有一个非标准的 Flex</p>
<p>在上面介绍了 <code>View</code> 组件会被在不同的情况编译的 <code>Flex</code> <code>Row</code> <code>Column</code>，具体来说，</p>
<ul>
<li>当 <code>align-items</code> 的属性值为 <code>stretch</code>、<code>daseline</code> 或者 <code>flex-wrap</code> 的属性值为 <code>wrap</code>会使用 <code>Flex</code> 组件</li>
<li>否则当 <code>flex-direction</code> 为 <code>row</code> 或者 <code>row-reverse</code> 使用 <code>Row</code> 组件</li>
<li>其他的情况使用 <code>Column</code> 组件</li>
</ul>
<p>因为鸿蒙的 <code>Row</code> 和 <code>Column</code> 组件的<code>align-items</code>不支持 <code>stretch</code>和<code>daseline</code>，而 <code>Row</code>组件又不支持 <code>wrap</code> 换行</p>
<p>在使用 <code>Row</code> 或者 <code>Column</code> 的情况下，这和标准 Flex 布局基本没多大差别，问题就出在使用 Flex 组件这，这个组件有个奇怪的特性</p>
<blockquote>
<p>Flex组件主轴默认不设置时撑满父容器，Column、Row组件主轴不设置时默认是跟随子节点大小。</p>
</blockquote>
<p>这是官方文档的描述，这是一个很奇怪的特性，且没有办法通过设置取消，这导致很多奇怪的布局行为，这个效果类似于给元素永久设置了个 <code>flex: 1</code>，且比这个好厉害，就算有多层父元素，他也能把外层父元素撑开，感觉它才是爹！</p>
<p>在做兼容的时候，我总结了关于这个特性的兼容方式：</p>
<blockquote>
<p>当 flex 的 alitn-items 为 stretch 或者 daseline 时，需要给当前元素指定尺寸，在任何能不用 alitn-items 的这两个属性的时候，都不要用这两个属性。如果要使用stretch，建议父元素使用 alitn-items: flex-start，子元素使用 align-self: stretch，这样的形式</p>
</blockquote>
<p>当然，除了 Flex 布局这个最大的问题之外，还有很多与标准不太一样的地方，我整理总结了放在 <a href="https://duxapp.com/docs/course/harmony/compatible" target="_blank" rel="noopener noreferrer">兼容性章节</a>，在开发的时候需要特别注意</p>
<p>可以说我在兼容鸿蒙的过程中，大部分时间都是在做组件库的兼容，和这些样式斗智斗勇</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="开始使用">开始使用<a class="hash-link" aria-label="开始使用的直接链接" title="开始使用的直接链接" href="https://duxapp.com/blog/harmony#%E5%BC%80%E5%A7%8B%E4%BD%BF%E7%94%A8">​</a></h2>
<p>通过上面这一系列的操作，duxapp 框架已经基本实现了兼容鸿蒙，且提供了大量可用的 UI 组件库</p>
<p>你可以快速初始化一个 UI 库的示例项目，你可以通过这个示例项目快速的查看到 UI 库在鸿蒙端以及其他端的效果</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token plain">npx duxapp-cli create projectExample duxuiExample</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<blockquote>
<p>在运行这个命令之前，你需要安装好 <code>nodejs 20+</code> <code>yarn</code> <code>git</code></p>
</blockquote>
<p>创建项目后，进入项目运行以下命令</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token function" style="color:#79b6f2">yarn</span><span class="token plain"> dev:harmony </span><span class="token parameter variable" style="color:#cb4b16">--app</span><span class="token operator" style="color:#fc929e">=</span><span class="token plain">duxuiExample</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>编译完成后，使用 DevEco Studio 打开 dist/harmony 目录，这个目录就是一个原生鸿蒙项目</p>
<p>打开项目后，右上角工具栏区域，选择已经开启的虚拟机，并且点击右侧的运行按钮（三角符号），开始编译，编译后，会自动在虚拟机上启动这个 app</p>
<p>如果想继续开发项目，请查看<a href="https://duxapp.com/docs/course/harmony/start" target="_blank" rel="noopener noreferrer">鸿蒙入门文档</a></p>
<blockquote>
<p>当前版本在 windows 系统上，仍然存在问题，能编译成功，但是启动 app 会报错，你可以先尝试使用其他系统进行编译，例如 Mac，这个问题将会在不久后修复</p>
</blockquote>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="未来展望">未来展望<a class="hash-link" aria-label="未来展望的直接链接" title="未来展望的直接链接" href="https://duxapp.com/blog/harmony#%E6%9C%AA%E6%9D%A5%E5%B1%95%E6%9C%9B">​</a></h2>
<p>目前对鸿蒙的兼容取得了初步的成效，但是也还有少数一些组件和功能还未实现兼容，像下面这些，将逐步完善这些组件或功能</p>
<ul>
<li>PullView Modal 等组件动画效果</li>
<li>Picker 组件暂不支持</li>
<li>Sign 签名组件待完善</li>
<li>录音组件录音功能待完善</li>
<li>微信模块相关功能暂不支持</li>
<li>地图暂不支持</li>
<li>List、Detail 组件待完善</li>
</ul>
<p>Taro 目前开发中的版本，将放弃使用鸿蒙的 Flex 布局方式，转而使用更底层的实现方式，使用了 React Native 的布局引擎 <code>Yoga</code>，用过 Yoga 引擎来来布局，将引擎的计算结果再赋值到具体的组件上，这样就能极大改善鸿蒙布局兼容性问题，等待 Taro 的这套方案开源后，duxapp 也将跟进</p>
<p>如果你有兴趣，请继续查看文档了解详情吧</p>
<p><a href="https://duxapp.com/" target="_blank" rel="noopener noreferrer">开发文档</a><br>
<a href="https://github.com/duxapp" target="_blank" rel="noopener noreferrer">GitHub</a></p>]]></content:encoded>
            <category>duxapp</category>
            <category>harmony</category>
            <category>UI库</category>
            <category>鸿蒙</category>
        </item>
        <item>
            <title><![CDATA[duxui：基于Taro，兼容React Native、小程序、H5的多端UI库]]></title>
            <link>https://duxapp.com/blog/duxui</link>
            <guid>https://duxapp.com/blog/duxui</guid>
            <pubDate>Thu, 26 Sep 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[使用UI库提供的多端统一组件，来快速完成项目]]></description>
            <content:encoded><![CDATA[<p>duxui是duxapp官方开发的一款兼容多端的UI组件库，兼容小程序、H5、React Native，库中提供了60+的组件，覆盖大部分使用场景</p>
<p>它能帮助你通过统一的组件样式，快速完成多端应用的开发，包括React Native端的APP开发</p>
<p>duxui已经被我用于很多项目中，其中包含APP的项目就开发了几十个了，你可以通过这个链接去查看或者体验这些APP，<a href="https://app.share.dux.plus/" target="_blank" rel="noopener noreferrer">https://app.share.dux.plus/</a>，这里只包含了其中一部分，其中一些APP可能因为停止运营，无法正常浏览</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="示例">示例<a class="hash-link" aria-label="示例的直接链接" title="示例的直接链接" href="https://duxapp.com/blog/duxui#%E7%A4%BA%E4%BE%8B">​</a></h2>
<p>如果你想看到这些组件的展示效果，请根据不同的端进行查看</p>
<ul>
<li>小程序<br>
<img decoding="async" loading="lazy" alt="小程序" src="https://duxapp.com/assets/images/weapp-be9fc343794749aa3f8469086c263007.jpg" width="258" height="258" class="img_ev3q"></li>
<li>APP <a href="https://app.share.dux.plus/cn.duxapp.duxui" target="_blank" rel="noopener noreferrer">https://app.share.dux.plus/cn.duxapp.duxui</a></li>
<li>H5 <a href="https://duxui.duxapp.com/" target="_blank" rel="noopener noreferrer">https://duxui.duxapp.com</a></li>
</ul>
<p>如果你想通过项目来查看这些组件的运行效果或者组件源码，使用下面这个命令创建一个UI库的示例代码</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token plain">npx duxapp-cli create projectName duxuiExample</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>其中的 <code>projectName</code> 是要创建的项目名称，创建之后根命令行据提示进行下一步操作</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="使用">使用<a class="hash-link" aria-label="使用的直接链接" title="使用的直接链接" href="https://duxapp.com/blog/duxui#%E4%BD%BF%E7%94%A8">​</a></h2>
<p>这是duxapp的一个模块，需要在duxapp中使用才能使用这个模块，UI库的文档请查看<a href="https://duxapp.com/docs/duxui/start" target="_blank" rel="noopener noreferrer">https://duxapp.com/docs/duxui/start</a></p>
<p>如果你还没有这个模块，需要先安装duxui模块，如果你还不知道什么是<a href="https://duxapp.com/" target="_blank" rel="noopener noreferrer">duxapp框架</a>，请先查看<a href="https://duxapp.com/blog/intro" target="_blank" rel="noopener noreferrer">这篇文章</a>了解</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token function" style="color:#79b6f2">yarn</span><span class="token plain"> duxapp app </span><span class="token function" style="color:#79b6f2">add</span><span class="token plain"> duxui</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>安装之后在你的模块中导入即可使用，像下面这样</p>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token keyword module" style="color:#c5a5c5">import</span><span class="token plain"> </span><span class="token imports punctuation" style="color:#657b83">{</span><span class="token imports"> </span><span class="token imports maybe-class-name">Column</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">Header</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">Image</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> px</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">Row</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">ScrollView</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">Tab</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">TabItem</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">Text</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">TopView</span><span class="token imports"> </span><span class="token imports punctuation" style="color:#657b83">}</span><span class="token plain"> </span><span class="token keyword module" style="color:#c5a5c5">from</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'@/duxui'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token keyword module" style="color:#c5a5c5">import</span><span class="token plain"> </span><span class="token imports punctuation" style="color:#657b83">{</span><span class="token imports"> </span><span class="token imports maybe-class-name">GridIcon</span><span class="token imports"> </span><span class="token imports punctuation" style="color:#657b83">}</span><span class="token plain"> </span><span class="token keyword module" style="color:#c5a5c5">from</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'@/gridOperator'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token keyword module" style="color:#c5a5c5">export</span><span class="token plain"> </span><span class="token keyword module" style="color:#c5a5c5">default</span><span class="token plain"> </span><span class="token keyword" style="color:#c5a5c5">function</span><span class="token plain"> </span><span class="token function maybe-class-name" style="color:#79b6f2">LedgerDetail</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#c5a5c5">return</span><span class="token plain"> </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">TopView</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Header</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">title</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">企业台账详情</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag punctuation" style="color:#657b83">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">ScrollView</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">mt-3 mh-3 bg-white r-1 p-3 gap-3 items-start</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Image</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">style</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript literal-property property" style="color:#2aa198">width</span><span class="token tag script language-javascript operator" style="color:#fc929e">:</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript function" style="color:#79b6f2">px</span><span class="token tag script language-javascript punctuation" style="color:#657b83">(</span><span class="token tag script language-javascript number" style="color:#5a9bcf">80</span><span class="token tag script language-javascript punctuation" style="color:#657b83">)</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">square</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag punctuation" style="color:#657b83">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Column</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">grow</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">mt-1 gap-1</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">numberOfLines</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">1</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text">鄂尔多斯市九工建筑有限责任公司</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">mt-1</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">18</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">color</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">2</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text">联系人：小阿呆 | 联系电话：010-4521-8652</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">18</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">color</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">2</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text">所属网格片区：</span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">type</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">primary</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text">轻纺织产业园</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text">    历史问题：</span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">type</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">danger</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text">12个</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Column</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">GridIcon</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">self-center text-primary</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">56</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">name</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">biaoqianlanbodianhua</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag punctuation" style="color:#657b83">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Column</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">mt-3</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Tab</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">            tabs</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">map</span><span class="token punctuation" style="color:#657b83">(</span><span class="token parameter">item</span><span class="token plain"> </span><span class="token arrow operator" style="color:#fc929e">=&gt;</span><span class="token plain"> </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">TabItem</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">key</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e">item</span><span class="token tag script language-javascript punctuation" style="color:#657b83">.</span><span class="token tag script language-javascript property-access" style="color:#fc929e">value</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">title</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e">item</span><span class="token tag script language-javascript punctuation" style="color:#657b83">.</span><span class="token tag script language-javascript property-access" style="color:#fc929e">name</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">paneKey</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e">item</span><span class="token tag script language-javascript punctuation" style="color:#657b83">.</span><span class="token tag script language-javascript property-access" style="color:#fc929e">value</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag punctuation" style="color:#657b83">/&gt;</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Tab</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Column</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Column</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">mt-3 mh-3 bg-white r-1 p-3</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">1</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">style</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript literal-property property" style="color:#2aa198">lineHeight</span><span class="token tag script language-javascript operator" style="color:#fc929e">:</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript function" style="color:#79b6f2">px</span><span class="token tag script language-javascript punctuation" style="color:#657b83">(</span><span class="token tag script language-javascript number" style="color:#5a9bcf">42</span><span class="token tag script language-javascript punctuation" style="color:#657b83">)</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text">公司是适应市场经济社会化大生产的需要而形成的一种企业组织形式。中国的公司是指依照《中华人民共和国公司法》在中国境内设立的以营利为目的社团法人，包括有限责任公司和股份有限公司。 指企业的组织形式。以营利为目的的社团法人。在资本主义社会获得高度发展。我国在建国后对私营公司进行了社会主义改造。国营工、商、建筑、运输等部门中实行独立经济核算的经营管理组织和某些城市中按行业划分的专业管理机构，也通称公司。随着我国经济体制的改革，享有法人资格的各种公司纷纷设立，按章程从事自身的生产经营活动。 指企业的组织形式。以营利为目的的社团法人。在资本主义社会获得高度发展。我国在建国后对私营公司进行了社会主义改造。国营工、商、建筑、运输等部门中实行独立经济核算的经营管理组织和某些城市中按行业划分的专业管理机构，也通称公司。随着我国经济体制的改革，享有法人资格的各种公司纷纷设立，按章程从事自身的生产经营活动。 折叠</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Column</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">ScrollView</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">  </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">TopView</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> tabs </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"> </span><span class="token literal-property property" style="color:#2aa198">name</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'基本信息'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> </span><span class="token literal-property property" style="color:#2aa198">value</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token number" style="color:#5a9bcf">0</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"> </span><span class="token literal-property property" style="color:#2aa198">name</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'上报工单'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> </span><span class="token literal-property property" style="color:#2aa198">value</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token number" style="color:#5a9bcf">1</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"> </span><span class="token literal-property property" style="color:#2aa198">name</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'历史问题'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> </span><span class="token literal-property property" style="color:#2aa198">value</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token number" style="color:#5a9bcf">2</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">]</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="组件库">组件库<a class="hash-link" aria-label="组件库的直接链接" title="组件库的直接链接" href="https://duxapp.com/blog/duxui#%E7%BB%84%E4%BB%B6%E5%BA%93">​</a></h2>
<p>下面我来介绍一下这些组件和组件的功能</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="topview-顶层容器">TopView 顶层容器<a class="hash-link" aria-label="TopView 顶层容器的直接链接" title="TopView 顶层容器的直接链接" href="https://duxapp.com/blog/duxui#topview-%E9%A1%B6%E5%B1%82%E5%AE%B9%E5%99%A8">​</a></h3>
<p>TopView是作为页面的根组件使用的，在duxapp中，每个页面都需要存在这个组件，他用来实现duxapp的多项功能</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="header-头部导航">Header 头部导航<a class="hash-link" aria-label="Header 头部导航的直接链接" title="Header 头部导航的直接链接" href="https://duxapp.com/blog/duxui#header-%E5%A4%B4%E9%83%A8%E5%AF%BC%E8%88%AA">​</a></h3>
<p>duxapp默认将头部设置为了自定义，每个页面面建议都使用一个头部组件作为标题的显示，且Header组件会控制状态栏颜色显示、H5页面标题显示</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="scrollview-滚动容器">ScrollView 滚动容器<a class="hash-link" aria-label="ScrollView 滚动容器的直接链接" title="ScrollView 滚动容器的直接链接" href="https://duxapp.com/blog/duxui#scrollview-%E6%BB%9A%E5%8A%A8%E5%AE%B9%E5%99%A8">​</a></h3>
<p>这是对Taro ScrollView的封装，实现了多个端的下拉刷新功能，ScrollView仅支持垂直滚动，需要横向滚动使用 ScrollView.Horizontal</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="pullview-弹窗">PullView 弹窗<a class="hash-link" aria-label="PullView 弹窗的直接链接" title="PullView 弹窗的直接链接" href="https://duxapp.com/blog/duxui#pullview-%E5%BC%B9%E7%AA%97">​</a></h3>
<p>可以从上下左右4个方向弹出内容</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="loading-加载动画">Loading 加载动画<a class="hash-link" aria-label="Loading 加载动画的直接链接" title="Loading 加载动画的直接链接" href="https://duxapp.com/blog/duxui#loading-%E5%8A%A0%E8%BD%BD%E5%8A%A8%E7%94%BB">​</a></h3>
<p>用于展示loading动画，类似于ios那样的菊花</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="absolute-绝对定位">Absolute 绝对定位<a class="hash-link" aria-label="Absolute 绝对定�位的直接链接" title="Absolute 绝对定位的直接链接" href="https://duxapp.com/blog/duxui#absolute-%E7%BB%9D%E5%AF%B9%E5%AE%9A%E4%BD%8D">​</a></h3>
<p>放在这个组件内的子元素，会被渲染在最外层，这是用TopView.add方法实现的</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="list-分页列表">List 分页列表<a class="hash-link" aria-label="List 分页列表的直接链接" title="List 分页列表的直接链接" href="https://duxapp.com/blog/duxui#list-%E5%88%86%E9%A1%B5%E5%88%97%E8%A1%A8">​</a></h3>
<p>当你的列表接口采用 page 进行分页时，可以用这个组件快速实现列表页面，这个组件有用以下特性</p>
<ul>
<li>下拉刷新</li>
<li>自动分页</li>
<li>空组件展示</li>
<li>自定义头部底部渲染</li>
<li>RN端使用 @shopify/flash-list 实现，拥有更好的性能</li>
<li>多列支持</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="layout-布局计算">Layout 布局计算<a class="hash-link" aria-label="Layout 布局计算的直接链接" title="Layout 布局计算的直接链接" href="https://duxapp.com/blog/duxui#layout-%E5%B8%83%E5%B1%80%E8%AE%A1%E7%AE%97">​</a></h3>
<p>用来计算Layout所在的组件的位置、尺寸信息</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="actionsheet-弹出菜单">ActionSheet 弹出菜单<a class="hash-link" aria-label="ActionSheet 弹出菜单的直接链接" title="ActionSheet 弹出菜单的直接链接" href="https://duxapp.com/blog/duxui#actionsheet-%E5%BC%B9%E5%87%BA%E8%8F%9C%E5%8D%95">​</a></h3>
<p>封装弹出菜单功能</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="button-按钮">Button 按钮<a class="hash-link" aria-label="Button 按钮的直接链接" title="Button 按钮的直接链接" href="https://duxapp.com/blog/duxui#button-%E6%8C%89%E9%92%AE">​</a></h3>
<p>按钮组件</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="cell-单元格">Cell 单元格<a class="hash-link" aria-label="Cell 单元格的直接链接" title="Cell 单元格的直接链接" href="https://duxapp.com/blog/duxui#cell-%E5%8D%95%E5%85%83%E6%A0%BC">​</a></h3>
<p>单元格组件用来展示竖向的菜单列表，默认拥有阴影属性</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="lineargradient-线性渐变">LinearGradient 线性渐变<a class="hash-link" aria-label="LinearGradient 线性渐变的直接链接" title="LinearGradient 线性渐变的直接链接" href="https://duxapp.com/blog/duxui#lineargradient-%E7%BA%BF%E6%80%A7%E6%B8%90%E5%8F%98">​</a></h3>
<p>因为RN不支持通过css编写渐变，所以写了这个组件用于实现渐变功能</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="boxshadow-阴影">BoxShadow 阴影<a class="hash-link" aria-label="BoxShadow 阴影的直接链接" title="BoxShadow 阴影的直接链接" href="https://duxapp.com/blog/duxui#boxshadow-%E9%98%B4%E5%BD%B1">​</a></h3>
<p>由于RN 安卓端对阴影的支持不太完善，使用这个组件可以实现阴影效果</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="column-flex竖向">Column flex竖向<a class="hash-link" aria-label="Column flex竖向的直接链接" title="Column flex竖向的直接链接" href="https://duxapp.com/blog/duxui#column-flex%E7%AB%96%E5%90%91">​</a></h3>
<p>这是用于快速竖向布局的组件</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="row-flex横向">Row flex横向<a class="hash-link" aria-label="Row flex横向的直接链接" title="Row flex横向的直接链接" href="https://duxapp.com/blog/duxui#row-flex%E6%A8%AA%E5%90%91">​</a></h3>
<p>这是用于快速横向布局的组件</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="space-间距">Space 间距<a class="hash-link" aria-label="Space 间距的直接链接" title="Space 间距的直接链接" href="https://duxapp.com/blog/duxui#space-%E9%97%B4%E8%B7%9D">​</a></h3>
<p>用于控制子元素的间距，通过 gap 实现，建议直接使用全局样式的 gap</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="divider-分割线">Divider 分割线<a class="hash-link" aria-label="Divider 分割线的直接链接" title="Divider 分割线的直接链接" href="https://duxapp.com/blog/duxui#divider-%E5%88%86%E5%89%B2%E7%BA%BF">​</a></h3>
<p>使用边框实现的分割线</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="grid-宫格">Grid 宫格<a class="hash-link" aria-label="Grid 宫格的直接链接" title="Grid 宫格的直接链接" href="https://duxapp.com/blog/duxui#grid-%E5%AE%AB%E6%A0%BC">​</a></h3>
<p>用于实现9宫格这样的布局方式</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="card-卡片">Card 卡片<a class="hash-link" aria-label="Card 卡片的直接链接" title="Card 卡片的直接链接" href="https://duxapp.com/blog/duxui#card-%E5%8D%A1%E7%89%87">​</a></h3>
<p>卡片布局，带有外边距，内边距、圆角、阴影的组件</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="tab-选项卡">Tab 选项卡<a class="hash-link" aria-label="Tab 选项卡的直接链接" title="Tab 选项卡的直接链接" href="https://duxapp.com/blog/duxui#tab-%E9%80%89%E9%A1%B9%E5%8D%A1">​</a></h3>
<p>选项卡切换，也可以用于表单项使用</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="tabbar-底部导航">TabBar 底部导航<a class="hash-link" aria-label="TabBar 底部导航的直接链接" title="TabBar 底部导航的直接链接" href="https://duxapp.com/blog/duxui#tabbar-%E5%BA%95%E9%83%A8%E5%AF%BC%E8%88%AA">​</a></h3>
<p>通常用于app首页的底部导航，要使用这个组件需要通过创建函数创建</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="elevator-电梯楼层">Elevator 电梯楼层<a class="hash-link" aria-label="Elevator 电梯楼层的直接链接" title="Elevator 电梯楼层的直接链接" href="https://duxapp.com/blog/duxui#elevator-%E7%94%B5%E6%A2%AF%E6%A5%BC%E5%B1%82">​</a></h3>
<p>例如城市选择，可以通过城市名称首字母进行导航，快速选择到需要的城市，就可以用这个组件</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="menu-下拉菜单">Menu 下拉菜单<a class="hash-link" aria-label="Menu 下拉菜单的直接链接" title="Menu 下拉菜单的直接链接" href="https://duxapp.com/blog/duxui#menu-%E4%B8%8B%E6%8B%89%E8%8F%9C%E5%8D%95">​</a></h3>
<p>下拉菜单，常见用于一些表单的筛选</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="form-表单">Form 表单<a class="hash-link" aria-label="Form 表单的直接链接" title="Form 表单的直接链接" href="https://duxapp.com/blog/duxui#form-%E8%A1%A8%E5%8D%95">​</a></h3>
<p>封装了表单组件，能快速完成表单的布局、表单验证、复杂对象表单</p>
<p>表单包含了一系列的组件或者方法，包括下面这些</p>
<ul>
<li>Form 表单</li>
<li>FormItem 表单项</li>
<li>FormSubmit 表单提交</li>
<li>FormReset 表单重置</li>
<li>FormObject 对象表单</li>
<li>FormArray 数组表单</li>
<li>FormArrayAction 数组表单操作管理</li>
<li>useFormContext 获取表单上下文</li>
<li>useFormItemProxy 给表单代理值和事件</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="input-输入框">Input 输入框<a class="hash-link" aria-label="Input 输入框的直接链接" title="Input 输入框的直接链接" href="https://duxapp.com/blog/duxui#input-%E8%BE%93%E5%85%A5%E6%A1%86">​</a></h3>
<p>对Taro Input的封装，新增了一些属性，基本不带样式，需要自行编写样式</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="textarea-多行文本">Textarea 多行文本<a class="hash-link" aria-label="Textarea 多行文本的直接链接" title="Textarea 多行文本的直接链接" href="https://duxapp.com/blog/duxui#textarea-%E5%A4%9A%E8%A1%8C%E6%96%87%E6%9C%AC">​</a></h3>
<p>对Taro Textarea的封装，新增了一些属性</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="picker-选择器">Picker 选择器<a class="hash-link" aria-label="Picker 选择器的直接链接" title="Picker 选择器的直接链接" href="https://duxapp.com/blog/duxui#picker-%E9%80%89%E6%8B%A9%E5%99%A8">​</a></h3>
<p>选择器包含了单列选择器和多列选择器</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="pickerdate-日期选择">PickerDate 日期选择<a class="hash-link" aria-label="PickerDate 日期选择的直接链接" title="PickerDate 日期选择的直接链接" href="https://duxapp.com/blog/duxui#pickerdate-%E6%97%A5%E6%9C%9F%E9%80%89%E6%8B%A9">​</a></h3>
<p>用于日期时间的选择</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="radio-单选">Radio 单选<a class="hash-link" aria-label="Radio 单选的直接链接" title="Radio 单选的直接链接" href="https://duxapp.com/blog/duxui#radio-%E5%8D%95%E9%80%89">​</a></h3>
<p>单选组件</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="checkbox-多选">Checkbox 多选<a class="hash-link" aria-label="Checkbox 多选的直接链接" title="Checkbox 多选的直接链接" href="https://duxapp.com/blog/duxui#checkbox-%E5%A4%9A%E9%80%89">​</a></h3>
<p>多选组件</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="switch-开关">Switch 开关<a class="hash-link" aria-label="Switch 开关的直接链接" title="Switch 开关的直接链接" href="https://duxapp.com/blog/duxui#switch-%E5%BC%80%E5%85%B3">​</a></h3>
<p>开关组件</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="calendar-日历">Calendar 日历<a class="hash-link" aria-label="Calendar 日历的直接链接" title="Calendar 日历的直接链接" href="https://duxapp.com/blog/duxui#calendar-%E6%97%A5%E5%8E%86">​</a></h3>
<p>为兼容多端，所以编写的日历组件，支持日、周、范围选择，支持多种自定义日历的方式</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="grade-评分">Grade 评分<a class="hash-link" aria-label="Grade 评分的直接链接" title="Grade 评分的直接链接" href="https://duxapp.com/blog/duxui#grade-%E8%AF%84%E5%88%86">​</a></h3>
<p>评分组件</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="cascade-级联选择">Cascade 级联选择<a class="hash-link" aria-label="Cascade 级联选择的直接链接" title="Cascade 级联选择的直接链接" href="https://duxapp.com/blog/duxui#cascade-%E7%BA%A7%E8%81%94%E9%80%89%E6%8B%A9">​</a></h3>
<p>一个功能丰富的级联选择器，支持单选、多选，支持多级选择、单级选择，等更多功能</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="cardselect-卡片选择">CardSelect 卡片选择<a class="hash-link" aria-label="CardSelect 卡片选择的直接链接" title="CardSelect 卡片选择的直接链接" href="https://duxapp.com/blog/duxui#cardselect-%E5%8D%A1%E7%89%87%E9%80%89%E6%8B%A9">​</a></h3>
<p>一个丰富样式的卡片类型的选择器，同时支持单选和多选模式</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="upload-上传">Upload 上传<a class="hash-link" aria-label="Upload 上传的直接链接" title="Upload 上传的直接链接" href="https://duxapp.com/blog/duxui#upload-%E4%B8%8A%E4%BC%A0">​</a></h3>
<p>用于上传图片或者视频的组件</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="modalform-弹出表单">ModalForm 弹出表单<a class="hash-link" aria-label="ModalForm 弹出表单的直接链接" title="ModalForm 弹出表单的直接链接" href="https://duxapp.com/blog/duxui#modalform-%E5%BC%B9%E5%87%BA%E8%A1%A8%E5%8D%95">​</a></h3>
<p>用于将其他表单封装为一个弹出表单，例如单列选择器、日期选择器都是由这个组件封装的</p>
<p>这里包含了</p>
<ul>
<li>ModalForm 单出单个表单，作为一个表单使用，放在 FormItem 中</li>
<li>ModalForms 弹出多个表单，独立内容，放在Form内任何位置</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="numberkeyboard-数字键盘">NumberKeyboard 数字键盘<a class="hash-link" aria-label="NumberKeyboard 数字键盘的直接链接" title="NumberKeyboard 数字键盘的直接链接" href="https://duxapp.com/blog/duxui#numberkeyboard-%E6%95%B0%E5%AD%97%E9%94%AE%E7%9B%98">​</a></h3>
<p>用于数字的输入，例如输入验证码，支付密码、电话号码、身份证等</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="inputcode-验证码密码输入">InputCode 验证码密码输入<a class="hash-link" aria-label="InputCode 验证码密码输入的直接链接" title="InputCode 验证码密码输入的直接链接" href="https://duxapp.com/blog/duxui#inputcode-%E9%AA%8C%E8%AF%81%E7%A0%81%E5%AF%86%E7%A0%81%E8%BE%93%E5%85%A5">​</a></h3>
<p>通常需要配合 NumberKeyboard 组件来实现验证码的输入功能</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="licenseplate-车牌号输入">LicensePlate 车牌号输入<a class="hash-link" aria-label="LicensePlate 车牌号输入的直接链接" title="LicensePlate 车牌号输入的直接链接" href="https://duxapp.com/blog/duxui#licenseplate-%E8%BD%A6%E7%89%8C%E5%8F%B7%E8%BE%93%E5%85%A5">​</a></h3>
<p>车牌号输入组件</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="text-文本">Text 文本<a class="hash-link" aria-label="Text 文本的直接链接" title="Text 文本的直接链接" href="https://duxapp.com/blog/duxui#text-%E6%96%87%E6%9C%AC">​</a></h3>
<p>对Text的封装，对主题色、字号等进行了主题配置，对常用css的快捷属性封装</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="image-图片">Image 图片<a class="hash-link" aria-label="Image 图片的直接链接" title="Image 图片的直接链接" href="https://duxapp.com/blog/duxui#image-%E5%9B%BE%E7%89%87">​</a></h3>
<p>对图片的封装，实现了预览，多图预览，在RN端使用 expo-image 实现，提供更好的性能</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="badge-徽标">Badge 徽标<a class="hash-link" aria-label="Badge 徽标的直接链接" title="Badge 徽标的直接链接" href="https://duxapp.com/blog/duxui#badge-%E5%BE%BD%E6%A0%87">​</a></h3>
<p>用于展示未读消息数量，红点</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="tag-标签">Tag 标签<a class="hash-link" aria-label="Tag 标签的直接链接" title="Tag 标签的直接链接" href="https://duxapp.com/blog/duxui#tag-%E6%A0%87%E7%AD%BE">​</a></h3>
<p>标签展示</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="avatar-头像">Avatar 头像<a class="hash-link" aria-label="Avatar 头像的直接链接" title="Avatar 头像的直接链接" href="https://duxapp.com/blog/duxui#avatar-%E5%A4%B4%E5%83%8F">​</a></h3>
<p>显示一个头像或者头像组</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="htmlview-富文本显示">HtmlView 富文本显示<a class="hash-link" aria-label="HtmlView 富文本显示的直接链接" title="HtmlView 富文本显示的直接链接" href="https://duxapp.com/blog/duxui#htmlview-%E5%AF%8C%E6%96%87%E6%9C%AC%E6%98%BE%E7%A4%BA">​</a></h3>
<p>用于显示富文本</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="step-步骤条">Step 步骤条<a class="hash-link" aria-label="Step 步骤条的直接链接" title="Step 步骤条的直接链接" href="https://duxapp.com/blog/duxui#step-%E6%AD%A5%E9%AA%A4%E6%9D%A1">​</a></h3>
<p>例如快递更新日志，就可以用这个组件来实现</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="empty-空数据">Empty 空数据<a class="hash-link" aria-label="Empty 空数据的直接链接" title="Empty 空数据的直接链接" href="https://duxapp.com/blog/duxui#empty-%E7%A9%BA%E6%95%B0%E6%8D%AE">​</a></h3>
<p>某些列表数据为空时可以用这个组件显示</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="status-角标状态">Status 角标状态<a class="hash-link" aria-label="Status 角标状态的直接链接" title="Status 角标状态的直接链接" href="https://duxapp.com/blog/duxui#status-%E8%A7%92%E6%A0%87%E7%8A%B6%E6%80%81">​</a></h3>
<p>显示在卡片四个角的状态</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="longpress-长按">LongPress 长按<a class="hash-link" aria-label="LongPress 长按的直接链接" title="LongPress 长按的直接链接" href="https://duxapp.com/blog/duxui#longpress-%E9%95%BF%E6%8C%89">​</a></h3>
<p>长按事件封装</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="touchableopacity-触摸反馈">TouchableOpacity 触摸反馈<a class="hash-link" aria-label="TouchableOpacity 触摸反馈的直接链接" title="TouchableOpacity 触摸反馈的直接链接" href="https://duxapp.com/blog/duxui#touchableopacity-%E8%A7%A6%E6%91%B8%E5%8F%8D%E9%A6%88">​</a></h3>
<p>点击具有不透明效果的组件</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="modal-弹框">Modal 弹框<a class="hash-link" aria-label="Modal 弹框的直接链接" title="Modal 弹框的直接链接" href="https://duxapp.com/blog/duxui#modal-%E5%BC%B9%E6%A1%86">​</a></h3>
<p>将内容弹出，显示在屏幕中间</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="dropdown-下拉菜单">DropDown 下拉菜单<a class="hash-link" aria-label="DropDown 下拉菜单的直接链接" title="DropDown 下拉菜单的直接链接" href="https://duxapp.com/blog/duxui#dropdown-%E4%B8%8B%E6%8B%89%E8%8F%9C%E5%8D%95">​</a></h3>
<p>在元素做所在位置弹出一个菜单</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="loading-显示加载动画">loading 显示加载动画<a class="hash-link" aria-label="loading 显示加载动画的直接链接" title="loading 显示加载动画的直接链接" href="https://duxapp.com/blog/duxui#loading-%E6%98%BE%E7%A4%BA%E5%8A%A0%E8%BD%BD%E5%8A%A8%E7%94%BB">​</a></h3>
<p>显示加载中动画</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="message-消息通知">message 消息通知<a class="hash-link" aria-label="message 消息通知的直接链接" title="message 消息通知的直接链接" href="https://duxapp.com/blog/duxui#message-%E6%B6%88%E6%81%AF%E9%80%9A%E7%9F%A5">​</a></h3>
<p>显示一个消息通知</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="confirm-确认弹框">confirm 确认弹框<a class="hash-link" aria-label="confirm 确认弹框的直接链接" title="confirm 确认弹框的直接链接" href="https://duxapp.com/blog/duxui#confirm-%E7%A1%AE%E8%AE%A4%E5%BC%B9%E6%A1%86">​</a></h3>
<p>异步调用一个确认弹框</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="sign-签名">Sign 签名<a class="hash-link" aria-label="Sign 签名的直接链接" title="Sign 签名的直接链接" href="https://duxapp.com/blog/duxui#sign-%E7%AD%BE%E5%90%8D">​</a></h3>
<p>手写签名组件</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="horselanternlottery-跑马灯抽奖">HorseLanternLottery 跑马灯抽奖<a class="hash-link" aria-label="HorseLanternLottery 跑马灯抽奖的直接链接" title="HorseLanternLottery 跑马灯抽奖的直接链接" href="https://duxapp.com/blog/duxui#horselanternlottery-%E8%B7%91%E9%A9%AC%E7%81%AF%E6%8A%BD%E5%A5%96">​</a></h3>
<p>抽奖组件，可以随机结果，也可以异步指定抽奖结果</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="总结">总结<a class="hash-link" aria-label="总结的直接链接" title="总结的直接链接" href="https://duxapp.com/blog/duxui#%E6%80%BB%E7%BB%93">​</a></h2>
<p>可以看到，组件库很丰富，覆盖的使用场景很多</p>
<p>详细的使用方法，请前往开发文档查看</p>
<p>开发文档：<a href="http://duxapp.com/" target="_blank" rel="noopener noreferrer">http://duxapp.com</a></p>
<p>GitHub：<a href="https://github.com/duxapp" target="_blank" rel="noopener noreferrer">https://github.com/duxapp</a></p>]]></content:encoded>
            <category>duxapp</category>
            <category>duxui</category>
        </item>
        <item>
            <title><![CDATA[duxapp对RN端开发进行了哪些改动，如何提升开发效率]]></title>
            <link>https://duxapp.com/blog/react-native</link>
            <guid>https://duxapp.com/blog/react-native</guid>
            <pubDate>Tue, 24 Sep 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[duxapp 对RN做了很多的封装，这篇文章来介绍]]></description>
            <content:encoded><![CDATA[<p>Taro的React Native端开发提供了两种开发方式，一种是将壳和代码分离，一种是将壳和代码合并在一起开发</p>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>信息</div><div class="admonitionContent_BuS1"><ul>
<li>壳是用来打包调试版或者发版安装包使用的</li>
<li>代码是运行在壳上的js代码</li>
<li>Taro壳子的代码仓库<a href="https://github.com/NervJS/taro-native-shell" target="_blank" rel="noopener noreferrer">https://github.com/NervJS/taro-native-shell</a></li>
</ul></div></div>
<p>duxapp中更进一步，你不需要太关注壳子什么的，你只需要安装好安卓和ios的编译环境，用一个命令就能编译apk或者ios，并且这个编译的过程和duxapp的模块化理念高度绑定，通过指定 <code>--app=</code> 指定不同的入口，就能打包出不同的项目，就像下面这样</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token comment" style="color:#93a1a1"># 编译 duxuiExample 的安卓调试版本</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token function" style="color:#79b6f2">yarn</span><span class="token plain"> android </span><span class="token parameter variable" style="color:#cb4b16">--app</span><span class="token operator" style="color:#fc929e">=</span><span class="token plain">duxuiExample</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token comment" style="color:#93a1a1"># 编译 duxuiExample 的IOS调试版本</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token function" style="color:#79b6f2">yarn</span><span class="token plain"> ios </span><span class="token parameter variable" style="color:#cb4b16">--app</span><span class="token operator" style="color:#fc929e">=</span><span class="token plain">duxuiExample</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token comment" style="color:#93a1a1"># 编译成功后启动Metro代码编译服务</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token function" style="color:#79b6f2">yarn</span><span class="token plain"> start </span><span class="token parameter variable" style="color:#cb4b16">--app</span><span class="token operator" style="color:#fc929e">=</span><span class="token plain">duxuiExample</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>下面我来详细介绍一下，在duxapp中是如何对RN进行优化的</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="配置化">配置化<a class="hash-link" aria-label="配置化的直接链接" title="配置化的直接链接" href="https://duxapp.com/blog/react-native#%E9%85%8D%E7%BD%AE%E5%8C%96">​</a></h2>
<p>对于Taro的壳子，或者原生React Native，都会存在 <code>android</code> <code>ios</code>这两个文件夹，而在duxapp中，这些文件夹的内容是自动生成的，那么对于需要在这些文件夹中修改的配置内容，例如包名、版本号、新架构开关等，都通过配置文件的方式配置了，而不需要需修改具体的文件</p>
<p>这个配置文件是项目配置文件夹下的 <code>configs/duxuiExample/duxapp.rn.js</code>，其中 duxuiExample 就是我通过<code>--app=duxuiExample</code> 指定的入口模块</p>
<p>这个配置文件的内容就像下面这样，可以清晰的看到，对安卓配置了包名、名称、版本号等信息，IOS同样如此</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token keyword module" style="color:#c5a5c5">export</span><span class="token plain"> </span><span class="token keyword module" style="color:#c5a5c5">default</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token literal-property property" style="color:#2aa198">android</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token literal-property property" style="color:#2aa198">appid</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'cn.duxapp.duxui'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token literal-property property" style="color:#2aa198">appName</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'duxUI库'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token literal-property property" style="color:#2aa198">versionCode</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token number" style="color:#5a9bcf">2</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token literal-property property" style="color:#2aa198">versionName</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'1.1.0'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token literal-property property" style="color:#2aa198">keystore</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token literal-property property" style="color:#2aa198">storeFile</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'duxui.keystore'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token literal-property property" style="color:#2aa198">keyAlias</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'duxui'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token literal-property property" style="color:#2aa198">storePassword</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'TN62eyasJAKm2ksD'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token literal-property property" style="color:#2aa198">keyPassword</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'TN62eyasJAKm2ksD'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token literal-property property" style="color:#2aa198">ios</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token literal-property property" style="color:#2aa198">BundleId</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'cn.duxapp.duxui'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token literal-property property" style="color:#2aa198">appName</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'duxUI库'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token literal-property property" style="color:#2aa198">versionCode</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token number" style="color:#5a9bcf">1</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token literal-property property" style="color:#2aa198">versionName</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'1.0.0'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token literal-property property" style="color:#2aa198">team</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">''</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token literal-property property" style="color:#2aa198">plist</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token string-property property" style="color:#2aa198">'duxapp/Info.plist'</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">NSCameraUsageDescription</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'duxUI库需要拍照用于APP内图片上传更换头像'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">NSContactsUsageDescription</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'duxapp需要访问你的通讯录，将客户信息保存到通讯录中'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">NSLocalNetworkUsageDescription</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'App需要访问你的本地网络，用于和服务器建立连接'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">NSLocationAlwaysAndWhenInUseUsageDescription</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'使用你的位置信息用于地图定位和位置选择'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">NSLocationAlwaysUsageDescription</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'使用你的位置信息用于地图定位和位置选择'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">NSLocationWhenInUseUsageDescription</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'使用你的位置信息用于地图定位和位置选择'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">NSPhotoLibraryAddUsageDescription</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'duxUI库需要保存宣传图到你的相册用于分享'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">NSPhotoLibraryUsageDescription</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'duxUI库需要访问相册用于APP内图片上传更换头像'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="内容复制">内容复制<a class="hash-link" aria-label="内容复制的直接链接" title="内容复制的直接链接" href="https://duxapp.com/blog/react-native#%E5%86%85%E5%AE%B9%E5%A4%8D%E5%88%B6">​</a></h2>
<p>上面这个配置文件已经解决了大部分打包需要用到的配置，但是你开发过RN的话你会看出来，证书他是一个文件，这里只指定了证书文件名称，但是并未指定证书具体内容，还有打包一个app，它总是需要一个app图标的，包括安卓和ios的图标，那么这些内容，可以通过配置文件中的copy文件夹，将这些项目文件复制到安卓或者ios对应的文件位置</p>
<p>这个文件夹内容看起来是这样的</p>
<p><img decoding="async" loading="lazy" alt="copy结构" src="https://duxapp.com/assets/images/image1-365439fa70b23108411dd167600e7054.png" width="518" height="692" class="img_ev3q"></p>
<p>那么你又会发现，好像这些文件的结构，以及如何生成这些文件，又是一个头疼的问题，<code>duxapp-cli</code>，帮你解决了这个麻烦的问题，只需要两个简单的命令，就可以自动创建这个些文件</p>
<p>首先是安卓证书文件，需要注意的是，这里是指定<code>--config=</code>，而不是指定 <code>--app=</code></p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token function" style="color:#79b6f2">yarn</span><span class="token plain"> duxapp android keystore </span><span class="token parameter variable" style="color:#cb4b16">--config</span><span class="token operator" style="color:#fc929e">=</span><span class="token plain">duxuiExample</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>创建成功后，需要手动将命令行打印的配置内容，放进duxapp.rn.js相应位置</p>
<p>然后是logo创建，需要将你项目的logo文件放在配置文件根目录，也就是 <code>configs/duxuiExample/logo.png</code></p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token function" style="color:#79b6f2">yarn</span><span class="token plain"> duxapp rn logo </span><span class="token parameter variable" style="color:#cb4b16">--config</span><span class="token operator" style="color:#fc929e">=</span><span class="token plain">duxuiExample</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>命令使用成功后，他会自动把logo放进对应位置，你就不需要进一步操作了</p>
<p>这样是不是就简单起来了，下面来看看，要如何使用第三方插件，例如微信插件、高德地图插件等</p>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>信息</div><div class="admonitionContent_BuS1"><p>以上所有提到的 <code>duxuiExample</code> 都是以 UI库示例 这个模块项目来举例的，在你的项目中根据实际情况替换</p></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="三方模块">三方模块<a class="hash-link" aria-label="三方模块的直接链接" title="三方模块的直接链接" href="https://duxapp.com/blog/react-native#%E4%B8%89%E6%96%B9%E6%A8%A1%E5%9D%97">​</a></h2>
<p>你的项目或多或少都要用一些第三方的插件，<code>React Native</code>基础模块中已经包含了很多基础常用插件，你可以通过<a href="http://duxapp.com/docs/app/duxappReactNative/start#%E4%B8%89%E6%96%B9%E6%A8%A1%E5%9D%97" target="_blank" rel="noopener noreferrer">三方模块</a>查看到，包含的基础插件</p>
<p>传统的方法是将他们添加到 <code>package.json</code> 依赖中，然后根据文档内容修改安卓或者ios文件夹对应的内容，在duxapp中提供了另外一种方式来实现第三方插件的使用</p>
<p>像这个<code>react-native-view-shot</code>安装方式很简单的插件，他只要求你将他添加到 <code>package.json</code> 的依赖中就可以使用了</p>
<p>那么我们结合模块，在你需要用到这个功能的模块配置文件中，一样的添加上这个依赖即可，像下面这个<code>duxui</code>模块的<code>package.json</code>文件一样</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token property" style="color:#2aa198">"dependencies"</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token property" style="color:#2aa198">"b-validate"</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">"^1.5.3"</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token property" style="color:#2aa198">"react-native-view-shot"</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">"~3.8.0"</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token property" style="color:#2aa198">"react-native-fast-shadow"</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">"~0.1.1"</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token property" style="color:#2aa198">"array-tree-filter"</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">"^2.1.0"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>其实开源的大多数第三方插件都是这样的，只需要添加到依赖中，重新打包就能用了，但是很少数的插件，他就是要改一些安卓或者ios里面的原生内容，像微信插件，它需要的改动还挺多的，我根据他文档需求，列举了下面这些</p>
<p>安卓：</p>
<ul>
<li>添加 proguard</li>
<li>新建 <code>WXEntryActivity.java</code> 用于回调处理</li>
<li>新建 <code>WXPayEntryActivity.java</code> 用于支付回调处理</li>
<li>添加 <code>&lt;package android:name="com.tencent.mm" /&gt;</code> 用于跳转到微信的白名单</li>
<li>添加 <code>.wxapi.WXEntryActivity</code></li>
<li>添加 <code>.wxapi.WXPayEntryActivity</code></li>
</ul>
<p>ios：</p>
<ul>
<li>由于插件bug，需要添加 pod 依赖项 <code>pod 'WechatOpenSDK'</code></li>
<li>修改 <code>AppDelegate.h</code> 入口文件</li>
<li>修改 <code>AppDelegate.mm</code> 文件进行一些处理</li>
<li>在 <code>Info.plist</code> 添加 Schemes 和 BundleURLTypes 和 applinks</li>
<li>在项目配置中，添加 <code>UniversalLink</code></li>
</ul>
<p>其他：</p>
<ul>
<li>通过patch修复当前版本的一个bug</li>
</ul>
<p>首先还是要在模块中添加依赖 <code>package.json</code> 文件</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token property" style="color:#2aa198">"dependencies"</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token property" style="color:#2aa198">"react-native-wechat-lib"</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">"^3.0.4"</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token property" style="color:#2aa198">"wechat-jssdk"</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">"^5.1.0"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>那么在duxapp前面提到，安卓和ios文件夹的内容都是自动生成的，我又是如何处理这些修改的呢？这里就需要用到 duxapp-cli 提供的模块更新脚本来处理</p>
<p>针对微信插件的处理脚本文件位于 <code>src/wechat/update/index.js</code>，这个文件的内容是下面这样的</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token comment" style="color:#93a1a1">// eslint-disable-next-line import/no-commonjs</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token keyword module" style="color:#c5a5c5">export</span><span class="token plain"> </span><span class="token keyword module" style="color:#c5a5c5">default</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">(</span><span class="token parameter punctuation" style="color:#657b83">{</span><span class="token parameter"> config </span><span class="token parameter punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#fc929e">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"> android</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> option </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> config</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#c5a5c5">return</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token comment" style="color:#93a1a1">// 描点插入</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token literal-property property" style="color:#2aa198">insert</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token string-property property" style="color:#2aa198">'android/app/proguard-rules.pro'</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token string-property property" style="color:#2aa198">'content'</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token template-string template-punctuation string" style="color:#8dc891">`</span><span class="token template-string string" style="color:#8dc891"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">  ##### 微信 ######</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">  -keep class com.tencent.mm.opensdk.** { *; }</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">  -keep class com.tencent.wxop.** { *; }</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">  -keep class com.tencent.mm.sdk.** { *; }</span><span class="token template-string template-punctuation string" style="color:#8dc891">`</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token string-property property" style="color:#2aa198">'ios/Podfile'</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token string-property property" style="color:#2aa198">'podEnd'</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token template-string template-punctuation string" style="color:#8dc891">`</span><span class="token template-string string" style="color:#8dc891">  pod 'WechatOpenSDK'</span><span class="token template-string template-punctuation string" style="color:#8dc891">`</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token string-property property" style="color:#2aa198">'ios/duxapp/AppDelegate.h'</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token keyword module" style="color:#c5a5c5">import</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'  #import "WXApi.h"'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token string-property property" style="color:#2aa198">'appDelegate.protocol'</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'  ,WXApiDelegate'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token string-property property" style="color:#2aa198">'ios/duxapp/AppDelegate.mm'</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token keyword module" style="color:#c5a5c5">import</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'#import &lt;React/RCTLinkingManager.h&gt;'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">appDelegate</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token template-string template-punctuation string" style="color:#8dc891">`</span><span class="token template-string string" style="color:#8dc891">// react-native-wechat-lib start</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="display:inline-block;color:#8dc891"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">  - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">      return  [WXApi handleOpenURL:url delegate:self];</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">  }</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="display:inline-block;color:#8dc891"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">  - (BOOL)application:(UIApplication *)application</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">    continueUserActivity:(NSUserActivity *)userActivity</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">    restorationHandler:(void(^)(NSArray&lt;id&lt;UIUserActivityRestoring&gt;&gt; * __nullable</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">    restorableObjects))restorationHandler {</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">    // 触发回调方法</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">    [RCTLinkingManager application:application continueUserActivity:userActivity restorationHandler:restorationHandler];</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">    return [WXApi handleOpenUniversalLink:userActivity</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">    delegate:self];</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">  }</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="display:inline-block;color:#8dc891"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">  // Universal Links 配置文件, 没使用的话可以忽略。</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">  // ios 9.0+</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">  - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">              options:(NSDictionary&lt;NSString*, id&gt; *)options</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">  {</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">    // Triggers a callback event.</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">    // 触发回调事件</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">    [RCTLinkingManager application:application openURL:url options:options];</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">    return [WXApi handleOpenURL:url delegate:self];</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">  }</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">  // react-native-wechat-lib end</span><span class="token template-string template-punctuation string" style="color:#8dc891">`</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token literal-property property" style="color:#2aa198">create</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token string-property property" style="color:#2aa198">'android/app/src/main/java/cn/duxapp/wxapi/WXEntryActivity.java'</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token template-string template-punctuation string" style="color:#8dc891">`</span><span class="token template-string string" style="color:#8dc891">package </span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#657b83">${</span><span class="token template-string interpolation">android</span><span class="token template-string interpolation punctuation" style="color:#657b83">.</span><span class="token template-string interpolation property-access">appid</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#657b83">}</span><span class="token template-string string" style="color:#8dc891">.wxapi;</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="display:inline-block;color:#8dc891"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">import android.app.Activity;</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">import android.os.Bundle;</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">import com.wechatlib.WeChatLibModule;</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="display:inline-block;color:#8dc891"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">public class WXEntryActivity extends Activity {</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">  @Override</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">  protected void onCreate(Bundle savedInstanceState) {</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">    super.onCreate(savedInstanceState);</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">    WeChatLibModule.handleIntent(getIntent());</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">    finish();</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">  }</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">}</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891"></span><span class="token template-string template-punctuation string" style="color:#8dc891">`</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token string-property property" style="color:#2aa198">'android/app/src/main/java/cn/duxapp/wxapi/WXPayEntryActivity.java'</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token template-string template-punctuation string" style="color:#8dc891">`</span><span class="token template-string string" style="color:#8dc891">package </span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#657b83">${</span><span class="token template-string interpolation">android</span><span class="token template-string interpolation punctuation" style="color:#657b83">.</span><span class="token template-string interpolation property-access">appid</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#657b83">}</span><span class="token template-string string" style="color:#8dc891">.wxapi;</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="display:inline-block;color:#8dc891"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">import android.app.Activity;</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">import android.os.Bundle;</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">import com.wechatlib.WeChatLibModule;</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="display:inline-block;color:#8dc891"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">public class WXPayEntryActivity extends Activity {</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">  @Override</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">  protected void onCreate(Bundle savedInstanceState) {</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">    super.onCreate(savedInstanceState);</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">    WeChatLibModule.handleIntent(getIntent());</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">    finish();</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">  }</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">}</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891"></span><span class="token template-string template-punctuation string" style="color:#8dc891">`</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token literal-property property" style="color:#2aa198">android</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token literal-property property" style="color:#2aa198">xml</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token string-property property" style="color:#2aa198">'app/src/main/AndroidManifest.xml'</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token literal-property property" style="color:#2aa198">tag</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">            </span><span class="token literal-property property" style="color:#2aa198">queries</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">              </span><span class="token literal-property property" style="color:#2aa198">child</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'&lt;package android:name="com.tencent.mm" /&gt;'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">            </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token literal-property property" style="color:#2aa198">attr</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">            </span><span class="token string-property property" style="color:#2aa198">'android:name=".MainApplication"'</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">              </span><span class="token literal-property property" style="color:#2aa198">child</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token template-string template-punctuation string" style="color:#8dc891">`</span><span class="token template-string string" style="color:#8dc891">&lt;activity</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">                android:name=".wxapi.WXEntryActivity"</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">                android:label="@string/app_name"</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">                android:exported="true"</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">                android:taskAffinity="</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#657b83">${</span><span class="token template-string interpolation">android</span><span class="token template-string interpolation punctuation" style="color:#657b83">.</span><span class="token template-string interpolation property-access">appid</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#657b83">}</span><span class="token template-string string" style="color:#8dc891">"</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">                android:launchMode="singleTask"</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">              /&gt;</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">              &lt;activity</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">                android:name=".wxapi.WXPayEntryActivity"</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">                android:label="@string/app_name"</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">                android:exported="true"</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token template-string string" style="color:#8dc891">              /&gt;</span><span class="token template-string template-punctuation string" style="color:#8dc891">`</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">            </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token literal-property property" style="color:#2aa198">ios</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token literal-property property" style="color:#2aa198">plist</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token string-property property" style="color:#2aa198">'duxapp/Info.plist'</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token literal-property property" style="color:#2aa198">CFBundleURLTypes</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">            </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">              </span><span class="token literal-property property" style="color:#2aa198">CFBundleTypeRole</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'Editor'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">              </span><span class="token literal-property property" style="color:#2aa198">CFBundleURLName</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'weixin'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">              </span><span class="token literal-property property" style="color:#2aa198">CFBundleURLSchemes</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">                option</span><span class="token operator" style="color:#fc929e">?.</span><span class="token plain">wechat</span><span class="token operator" style="color:#fc929e">?.</span><span class="token plain">appid </span><span class="token operator" style="color:#fc929e">||</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'wx'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">              </span><span class="token punctuation" style="color:#657b83">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">            </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token punctuation" style="color:#657b83">]</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token literal-property property" style="color:#2aa198">LSApplicationQueriesSchemes</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">[</span><span class="token string" style="color:#8dc891">'weixin'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'wechat'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'weixinULAPI'</span><span class="token punctuation" style="color:#657b83">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token string-property property" style="color:#2aa198">'duxapp/duxapp.entitlements'</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token string-property property" style="color:#2aa198">'com.apple.developer.associated-domains'</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">            </span><span class="token template-string template-punctuation string" style="color:#8dc891">`</span><span class="token template-string string" style="color:#8dc891">applinks:</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#657b83">${</span><span class="token template-string interpolation">option</span><span class="token template-string interpolation operator" style="color:#fc929e">?.</span><span class="token template-string interpolation">wechat</span><span class="token template-string interpolation operator" style="color:#fc929e">?.</span><span class="token template-string interpolation">applinks </span><span class="token template-string interpolation operator" style="color:#fc929e">||</span><span class="token template-string interpolation"> </span><span class="token template-string interpolation string" style="color:#8dc891">'duxapp.com'</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#657b83">}</span><span class="token template-string template-punctuation string" style="color:#8dc891">`</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token punctuation" style="color:#657b83">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>这个文件导出了一个函数，这个函数参数中的 config 就是当前项目的RN编译配置文件，这个文件中可以获取到了包名、版本号等信息</p>
<p>函数返回了一个对象，这个对象中的每一个key就代表不同的功能，下面一一介绍一下这些key</p>
<ul>
<li>insert 用于将内容插入到指定文件的指定位置</li>
<li>create 用于将文件创建于指定位置</li>
<li>android 其中的xml用来处理合并安卓中的xml文件的，这是用 <a href="https://github.com/xmldom/xmldom" target="_blank" rel="noopener noreferrer"><code>xmldom</code></a>来实现的</li>
<li>ios 其中的plist是用来合并ios的plist配置文件的</li>
</ul>
<p>关于这个脚本文件的详细内容需阅读 <a href="https://duxapp.com/docs/course/rn/package">使用原生模块</a> 了解详情</p>
<p>看了半天，是不是感觉这个模块处理也是挺复杂的，其实我已经封装了一些常用的原生模块，就像这个微信插件，你不需要再去实现一遍，你只需要安装这个微信模块并把他添加到你项目模块的依赖中就能使用了</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token function" style="color:#79b6f2">yarn</span><span class="token plain"> duxapp app </span><span class="token function" style="color:#79b6f2">add</span><span class="token plain"> wechat</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>然后就像 <code>duxuiExample</code> 这个模块的配置文件一样，将 <code>wechat</code> 添加到依赖中，然后重新编译</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token property" style="color:#2aa198">"name"</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">"duxuiExample"</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token property" style="color:#2aa198">"description"</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">"ui库示例"</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token property" style="color:#2aa198">"version"</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">"1.0.13"</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token property" style="color:#2aa198">"dependencies"</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token string" style="color:#8dc891">"duxui"</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token string" style="color:#8dc891">"duxcms"</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token string" style="color:#8dc891">"amap"</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token string" style="color:#8dc891">"echarts"</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token string" style="color:#8dc891">"wechat"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>还有更多的模块，请前往应用商店查看 <a href="https://cloud.dux.plus/apps" target="_blank" rel="noopener noreferrer">https://cloud.dux.plus/apps</a></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="总结">总结<a class="hash-link" aria-label="总结的直接链接" title="总结的直接链接" href="https://duxapp.com/blog/react-native#%E6%80%BB%E7%BB%93">​</a></h2>
<p>通过上面的说明，你已经基本了解了duxapp是如何处理RN端开发的，还有很多的详细的内容，还需要前往文档查看<a href="http://duxapp.com/docs/course/rn/start" target="_blank" rel="noopener noreferrer">http://duxapp.com/docs/course/rn/start</a></p>
<p>再结合duxapp提供的ui库、工具库、全局样式等方法，就能很快的完成你的APP项目了</p>
<p>GitHub：<a href="https://github.com/duxapp" target="_blank" rel="noopener noreferrer">https://github.com/duxapp</a></p>]]></content:encoded>
            <category>duxapp</category>
            <category>React Native</category>
        </item>
        <item>
            <title><![CDATA[Taro使用模块化开发，以提升开发效率]]></title>
            <link>https://duxapp.com/blog/intro</link>
            <guid>https://duxapp.com/blog/intro</guid>
            <pubDate>Mon, 23 Sep 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[通过模块化，将通用功能编写在通用模块中，提高代码复用率]]></description>
            <content:encoded><![CDATA[<p>duxapp是基于Taro二次开发的模块化框架</p>
<p>使用这个框架，结合框架提供的UI库和工具库，能帮助你快速且高质量的完成项目，且能实现同时开发小程序、H5、APP（React Native），并且保证各个端的一致性</p>
<p>duxapp还针对APP开发（React Native）做了大量优化，大大降低了APP发开的难度，你可以阅读<a href="http://duxapp.com/docs/course/rn/start" target="_blank" rel="noopener noreferrer">React Native教程</a>，了解详情</p>
<p>下面让我来详细介绍如何使用duxapp</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="何为模块化">何为模块化<a class="hash-link" aria-label="何为模块化的直接链接" title="何为模块化的直接链接" href="https://duxapp.com/blog/intro#%E4%BD%95%E4%B8%BA%E6%A8%A1%E5%9D%97%E5%8C%96">​</a></h2>
<p>什么是模块化？就像npm包一样，我们可以将一些通用的功能或页面编写在一个模块内，提供给多个项目来使用，以提高代码的复用性。</p>
<p>模块的概念在很多后端框架中很常见，它们可以在应用商店通过安装应用的方式来获得新功能，在前端框架中确很少见到类似的设计方案，当然你其实也可以理解为发布到npm就是一种模块化的设计，但是在Taro中很多功能他并不能发布到npm中，例如页面。页面需要放在项目中，当发布到npm之后就会无法使用</p>
<p>在duxapp框架中的模块化设计原理，和npm的依赖关系是类似的，每个模块有一个配置文件<code>app.json</code>，里面的依赖字段<code>dependencies</code>，用来填写我要用到的依赖，就像下面<code>ui库示例</code>这个模块的配置</p>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token string-property property" style="color:#2aa198">"name"</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">"duxuiExample"</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token string-property property" style="color:#2aa198">"description"</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">"ui库示例"</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token string-property property" style="color:#2aa198">"version"</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">"1.0.13"</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token string-property property" style="color:#2aa198">"dependencies"</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token string" style="color:#8dc891">"duxui"</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token string" style="color:#8dc891">"duxcms"</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token string" style="color:#8dc891">"amap"</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token string" style="color:#8dc891">"echarts"</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token string" style="color:#8dc891">"wechat"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>和npm依赖不一样的是，这里的依赖不包含版本信息。因为页面等限制条件，你一个项目中，同一个模块无法存在两个不同的版本，因此并未设计指定版本号的功能</p>
<p>依赖关系是逐层查找的，就像npm一样，例如这里依赖的<code>duxui</code>模块，他的模块配置文件是这样的</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token property" style="color:#2aa198">"name"</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">"duxui"</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token property" style="color:#2aa198">"description"</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">"DUXUI库"</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token property" style="color:#2aa198">"version"</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">"1.0.42"</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token property" style="color:#2aa198">"dependencies"</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token string" style="color:#8dc891">"duxapp"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>在duxui模块中他又使用了<code>duxapp</code>这个依赖，通过每个模块都去查找，我们最终整理出这样的依赖关系图</p>
<p><img decoding="async" loading="lazy" alt="dependencies" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAkAAAAGECAMAAADp1W87AAAA5FBMVEX///8fICDLy8v5+flNTk7U1NTr6+vm5uaXl5fX19fDw8PDxMR+f3/8/Pzk5OTp6enu7u7Hx8ff39/39/fZ2dnNzc3h4eHJycn19PXy8vLd3d3b29tYWFhlZWUjJCQpKirw8PBcXFxRUlI8PDw4OTl2d3fAwMCvr6+Dg4Ofn59wcXFiY2Onp6clJibY2NhVVlZ4eXlBQkKUlJRoaGhHSEhsbGzR0dGNjo6SkpI1NjYtLS0vMDB8fHwxMjKrq6uFhobFxcW4uLi7u7uamppzdHSlpqaJiopfYGCzs7Ojo6O2trZPUFCjnDW1AAAcv0lEQVR42uzSsQ2AMBAEsKdB0GQLKvbfjxWuoLhI9gweAAAAgN+dGxh6ravePfRaz1HuFaiZQAhETCC6CIRAxASii0AIREwgugiEQMQEootACERMILoIhEAfu3bX4yQQhmF4n0mjaDEGD0QTFlKgA9OClo8Ku2xbunS70P//gwTWumm1oYnRdPG9D2AOJnN0JZPJDHV2BIi6rAgQ9fcByS5OtZgA2rjJxBmNKgLUr84ClEo4laZkCIde3QRnFHEC1K/+FBB0IKzQRID+xzoB3bpi9iAhDgFoK0xkwE+029AC7DAzw/QnoK+pAYzHyO4qsfGBu2BcJbZWbON6PI9EYv0A5I9FERGgftQFyNg5UcIkjBiAzRqW8oit4y/YAIjZTZCqQOiYpmnAL7cY5Rbie3c1XAFe7s7Xw4dIKD48PpntFKsFpHvlxOUJAepFXYBkxQDCZ0CY86hGsgeExwaQyjkPgECNhlO0yRzwEiBiBjI2gucCep60gCIlAx7ZggD1oS5ATgEgfQYEVGyKI0AVnpqxBHWaWO+Y3qLR6j/uJ+0YxbIFlHJJkgSLCVAf6gLE3WNAITNPAYqY3HzVTTBn/q+AkrIFJByzySBAfagLkFc+ATJZBszWwDRfcRuGOgIGR4AsxVU1wEkA7XeAeIEoB1w1o1NYb+oCdM3cwHYk6EM504Zr2HkEsfQhxE3s7AE5Zp2tL0Ns3tpIC2MhWHAISCyCLRvAYnPdzsPAGtsEqBd1AcKdohY1IFyXTLhr3auA7D5B/MDK+R4Qa5rJPAOE4wdLlU+d1SGgncL4NQCXxxiUjDkxAepFnYCgG3jKwEEGTnYLwD/cCV0926/XTPBpC+tJ/+gy1XPpMrWfESDqJQCi5xx9jQBRBIg6OwJEXVYEiCJA1NkRIOqyIkBU3wGx95/fXVEX2gsA9O31hy9vPr76dEV9Z99ect0GwTAMfxIChFQuAooMTFiBh93/0po2vV9ODU4CuDyDziI11mvzQ3wGNEFAApCb4Vb4wByWscwR0M29okSzMquigYR5AvpakcqrojHIEuj7yQL6UhELniZeCJZOZOSeBiMnWsJ+QaK2QlgdV0Uvt+lErSGTzUB/QgpPnypaz6KX2ZilSW8TDtFvVPT5WcTLmouezLEgMi9yzl3Y20jUdqeJr+n6SYhRuwiGzLuNP0BGHTxNa4/2YLIoT63e8Dv1bnj/CGjt0Z5LRp1o4lHij/gPLP2Q+Fn5Az8rfaCW/6Dxa1shgt7Wz2hnbNpSr4rEv0ktspE4jVGcJpnftcRpzvB16NjMmSD2oxcvBho2AGMEdLM97D+0FrQWkWdqmWu+4dsxjseQWngjH7aOW7GH9V7IIcQEcV+3DnGK2ghgtIBuSqLKPfCRzBP1ar0X8ianE03a4SiTBSfAmAEBjtNU8EBu/Rb79m5dBHO8B8JFNgDGDQiQJouK9bVmLDJrLPp54aKZRxwXLVUOGDygioG6YZ9v11j0beGyzFXd2N8H59ED+nLGgMcjZe3zgY1nGur2K4SLH0aL8QO6qVjJ6he0nf6vjyJZlN9Vkaix/bJ2TRHQfSVzeA5Z/ssdWlEi8zjMrfzkgACp//zgXDu0tpXLZ70NMkycCqhudPNM4nnkpwXtPzi4JiwLFas/paj9Q3ITBXQTU9UTtH2HduE/IiqWWoNaLlBF8LvJArp/EYdnI0Z5ai84FcVAM5Mj3rivCgggnFqH5yP3F6kuFJHUQmiCaiXvDH8zX0D3eXrDK8jCM03X2OW3/u5ZvDd4w4QBAZKJFFGtfZefeZk7IpMpJy2f+1c+cwZ0Y/bWhNrfzpv1BzSpaVsG27/zmTagzwk5vJBjQfgJn0Skce2CswfymTgggAlF8FKOWZr4TDORU437b6IO5TN1QJBs1xKvJSNP1E5yThQDbbtAUlGNI+YOCJBKNCZ09pxoV8OfWBvben8VYQmOmTwgwGW/oYON2bGPiUpuzUcGYXDQ/AEBjHKJHmThfudjNkQUbcwHTtjjn7xCQCDZE3QSufcDNmR25dCmUIYKVwgI4GJDN5GLbIbamG0hxeb0aNVHLxJQ1699Y6zQ4+zLtDcnLqRDjasEhEg39OQ4DRFDCEqi1VZ9Ga8SEIwgaDDG3PFAzms0k7tBnesEBJ7Qm945Ooun1nIWUOlCASH3X0KkthI9sSxxQsOR2oUCMgH98ezQj1U4wwnUulJAko6wl1YdM0567luwc0DIQxzoeYNOLMc5mqPWpQKyBQPgCn0EhZO4RqVrBaQMBhAzjhtr7Wy4gJcKiDOMgKIHnea/A7sHpDGCLgEZT1ZAK6BmUpQLzAAroG4BKXWFIXIF1CugIiROcsaYpIzp1pAxJtjbPwRdSGPMR3btfbdpGIrj+M9Js8iDJlniOpeyrSvsKgigSpuoGKpQEYK9//uAUu3fNc45iqvpfF7AuXxzpMjOLfH+6bL/omz0y9AZyHTUMfDERJ0W/by69XdstJOjh0P6gwfyqJOCgv7oLCjo95/Aq3rXsakwooplDyfrRtA8hCeF6QZADU/qlvDm+CQeMrYxODSeP8CEPrrpI9D7hnxtRs84jEJwyNooMgUI6COoXcCb2hzAAALs6J9xbPkuPYZHMWkA0SUHMIC6jk2NMekKPDJtQnhUmXYBj+r2AAYQkI88gI6aHmlEQR+bk6CPwUc/i2T28vqb4CWzvBqaZvO8MGH9ZzNbDN5nD3oo35RBD00NHvMMe4TB9WrC5+nuqsUQcXnzeUKwvNxYDGE3l8sJm+XbMsYQ8+PtE99b2B434BBq7FNeKl5ntwbu0p8fFNH6OoG75Mdasfr2N4W75s8nxen8Yw4Gixx7pLeK29lVDVfT8qsieywLuCrKR8XsfTCFq2pzrnitTwrQpSn2KCeK3baBq+yXYvCQwlX6oNjdHsGV/a643SSjnOMt14rdcgZXMcsDXLVwpVeK3dbC1f2F4vY7Ap0O9wbUjU7vASVfFINTDVf6VLG7y+Fq9k5xu7gH2VRDApKAhqvmEpAERLCwEpAERJDGEpAERJAcSUASEEG+kIAkIIJ5IQFJQAQmlIAkIAI9lYAkIIIIEpAENNxUS0ASEEFoJCAJiKBoJKB/7Nptz5JQGAfw/a+5csYqexFrw0P4AKIyBGSAqChP2n1//++TmMe0elPtFLVzbQ534cb5X/ttB0UJ6DfqwzsJSAL6G4CMSgK6Vui3DVA0+2OAPr7/RUBBTwK61sb6UdeY/z1AiykeytsIA/T2tQQkBtBi2h5Ayq5lgGZ2Vvew9kfA2E/dWAcmE8CrP8UuDMOwu0Mv7moAC+1IEwXIq6viCLA4qT8p+sxeJree53eiIhQGaBVX9Qg88MYyimIIpJtPdukA4cwt6pl58kOeXwigyQxA2LxK4FjYGx2AFlfZCIustOPxbRrDU8+v2wTIN2fLfQ9b6gArSpxTDWM/gqbuguUUm30RVHQKa+og2IfZVBSgibX0yQCjfLZUX0Xh6dOt90xF0FUjQYDcfhxU/a+BVTuw+zpW+TR7lQH+YRe6nSd7wPOLARSaDCt1C2bOoZjT8unkQKHuvD5iodbhqbpNY2QfBkdBgF68/HlAQxoCwVdA8NTg1Rws76KpzRMwIhewMsSW4C1s54PREYh3gEYp7z3TGihpLAZQ3ph4qu8DO30DTSkm4Ktrvo3w/CIAbekZES0x7Osj0oCEjiMK0dQiAjq3aQjdwt68+XlAU5M9AsKSogbN8XZLkDan4gKrV4uOMEBstjiYFRhpQFYBY/J47wLII1cIoDFV3W73YN8Hxk4BNPvwRAy+DQ6I5xcBCFW27k9yFnUxoOK8ov0koAT82joNr9NoHSB/h28ABaQ071aPgKIC2NakiAIU54NxvHgAxHsXQGMyhADyqByey+OBOaBALb2QHPjdGyCeXwigwJxVOA32BkpVa1aUlH12B8i9TqN1gBTaXgDpqgF0KMGoP1U1rEn5HlCDKxUDSKc5MH0ElF56V0AheUIA6XSxwQPfAFkRoH0FFAE8vxhAqXq2E+5fOXDpyzmN3HtAfBrYHFoFaKQWnTTuAbadrCxK2M5H2RsjMsOtFj4AcoN0aTpiACGfMO9gOveA2LX3TNp68FRBCCBk5iDVQvDAHFBc6FubvCugZT4a8/xiAMHOGfReBDBr526DIdjJMs5HDohPA50zpnV7AEEzaVf0gFXzZYsSxUwB23KcrE+W8gAoPNBpDkGAjFy1jj3jHhDvPZNFqr0VBKgJ2quBa2AOyNup5tzKroCST0Rjnl8MoGMJYDoEkNhEeXA5qtWcA+LTACKVji0CBHDO35xh6x99UhQgMB2A86PeM63XjsAfEln6w8Drh/Wk7NoSBYixr9dzdH784YR0p0Vb2D/wMPUMSD5Mva9W3QNJQBLQ/w5I/p1DApKAJCAJSAKSgCQgCUgCkoAkIAlIApKAJCAJSAKSgCQgCUgCkoA+s3O3vU6DYBiA70koQfMAK4htiaaJGl9ilhij0U9qNMb//4uM72/TDUqBaa+PJ+ek63qPBx7G2QK0BWgL0BagLUBbgLYAbQHaArQFaAvQFqA/2N/eZXeTI5Z+vsvgrkcsf3eX3TuNWIenu9wehiIBciu8gY86xLKvbu2Wez0j1vx6l93VAbHMvV1u702RANmPB+jyenID8fi7DAPQdcS7/naX2f2U2nEj9xD08AqKnI2HufI06zToxf39gARXHjzeLXL7+Q2GeOzG86xV/PGbK4R4dv/yzi6fO+/2FosZgTMMz65cO+rq1SM/PPWrr244QhKx3593jeNe3fBI4/evIu7xhP1eIQmFG+e9jGtneHVjIixnFM7Djhm5ZecanGJfIB37K6HYXyEdO4cS7LO6L+NZ0qtID1C6qcP5mFNYWSdQldBoAUc5s0e60SEGSYHfbAH65P8M0DQjCnGNX20B+uRiAzT2SDYcEEtqrKlTqEp0aABJlDNMSOYMogWBo1qY0S2nDBrAHP6mmQCZgARe4WdbgNDOMy16MTkghfJYjfGoyjcRoLnH37QSIN0jjejxizaWBBn4GQ04MQ43EiCSDIl0IPygkSVBDv2IBmiBv2kkQEIhWRcsPmrnbjKZBjTgRHeljbeccUI6EwZ8c6nrjyMcQ31M4m8aCVCvscR4MFgBcSS5xA5eI82wxAANEsvYSWMFnBDl38pvjTpqQ2oPcSFSnpCds6jIOtRnJUpiLrGHuJz+OhH6Z5ZBY4/6vEZJJJP+yCIDww0y0xoR/q2rf9ZNiFCpbGuFLEap8cU/0UlsoI9opUVZPG0Jn4edJgsA/8gsxFnU5jsUJillCZ+N5qb27Vzm1yiO0xNKOzBEmg/IaJQKH/0D++FGIZ/mNqqzDbskZ+RE3lkAl7gT/Yt+RlXkFcoLFnFUj8w6rpELcUKcf+HSn9hJIEKtvuXAGXIbgjTIRGlUohUqIs01avAjojiNFRiZqwFPkhDpwi/8yRxq9VDVjBg6YB2ae3bRJyO0QDXWHzpUogwiWG6xElJcEJYjZ1GBdYRKRs8FQy2iq1/AvrCea7rQR0nOog4zSW0Rr8r+jXZY1dDniFDnUVzfoQbqnOsINc2qiQL21dgfln+eeo3CdI8KZsWn6udAbMDZnMD6RsXViEUodCiqC4TSBnFwuv7mW8wGjggowmq58INFzqAg4whlWR2kauIISMT248gtCiETDpoWJWhGMXPh/FgdeBtHGKNa0SQNChr7RZWMlRuDjGMoZxROqpnQDmVwlr5HWVbI0FF6ggSKEOXyw4znTjRSuWLX8UYSijMLhiEKPWF11AdCEaMIvO8amDWnfQuU8QHnamQYoikwrIyFibA+2/XciaYK13fW1f+/PqeGIT8ihZcWq7LSY21klJPeNDj0fMWpnRX8cVa7tJaH5jNWNHONdVkR+KSbOHH/Z2HAKaNkqGtUfDLU1iNeOZ5kPOdqbLNu/Uh1OIFkAzN/6qaEGbV1HivxB4vVjEryoBkuQadwQi/QBCviSxlNgbACWm/6bHXgB9F43frBwCXnE46bOKADmvGBvbvpURsGwgCc4L5JZ1cxBtxExD1E6l7ag3toxWpbiXLorf///zQfRYUVgSC8YizNc84F6Y1n4sFJU2J5ZSnTQyttg5X8oX3WyVtQZglicEBxMocejZUxC9DdG6AjKquvHAMZtJcj1Ea68ejGOiYJrmg0UGf8m54jHp2xac7KA2Dx0pJXg2i3L2WkJ1xPGQGBmqEaoIyCF5h1buE4TNevNSdgvIIZAscEJYkpUXalzIKyKdugLb8OEl6PlkpCWmU1LJfh+tVKtMa65By9+5/ZPdVq1m2nCcBfriYWQKAlSKPjw/0MU4JKE1ndOqTcmZtT9/FxLN7gf6qUEVqXTySgZ1WIfXv0AnXMmnjOt67SWLhzBf/+/5ocR0MyzIWrPHo6xCnaHtHNHfM6hk3mY4U6TaNWI4hcrnqsnsT21GbgjTrL6KUlbEjdjDYgu5wbNdFBGT1cOuc1XB7Rw3pnvlg83GBXOWZ1eoXq8YG5xwpDgTIWdt8xl7DasLwhz9lsv6c3efm1YFWsm+r3z5S9H19mTX8eCqCuY9aeyiibHv05yLe6+Siqj2kUvlZFMvdolV14omp6/itmL+nttoza6fw5jcSzHvKDKFeef5ptGsA3RvtBsz9pJN7tCD2fxCt7H2Q1/pCwsfiURuJp5yxx3Y6VAPH3tEiKJtfOMpwISYAi0AYofhKg6SRAEiBWJEASIAmQBGg6CZAEiBUJkARIAiQBmk4CJAFiRQIkAZIASYCmkwBJgFiRAP1l1152FQWCMADPX3FBHDes2CAEcWhQiQeEcAfvt3n/95lBbEZNzoyzO4T+F1ZiVcV08sWOQQFIABKA3o8A9DYg54TPUsy6CGjK3mZl5rY9m+LvUV0AGA/wklkhANWxQnwWVc46CMgkD2/GoANT6ITPsg8A+EcAKHPwZJVev8qqAPQPQNC6+A30X4BSuNcNPolLyxoQGc+AJqTXRRNXGLzICYchxj8A7FfacQ6Yvpn6JjD1s4kfdw6QKsV78vgJlrEO/PiBLL84exfIw5UTmbw2gGDLQFEd4gnaOXjHS7xERAd/An87TGpAvJscSPKLwvdNI65pSNNmvYeAgvVufKAQ1QWAE2EuT10WoaABEFDixUrXAIWKHW7I4ydwz0cYaxPB1q6+V8DCmn1cZZPXGyB946OwLqtYmbdzqlKuPmyMqRqb8KVqoYHlvJvaFI71NKfApJ9Azvh6/wCVCwDWH0DYXSrmtoBw6hqgbJ0D5h9A8JTV93nTG1nAwga0ddRWgxYllVPEJYDjlc9pW+nxCpNcloPl9y6/whIK4MS/Z8d8vXeAXApfAGXW2kSHAankPQPCB0W3hrO5knaDg13ZVoP2RwqA7VmSpJL4nEmnJ0Dw5AHLefcBkCrrS8vl670DVNDyBZB+tZIuA1pR+gJoRaP6fWXvheQ2cKJzWw1KcSk1yPHkd37yuYCCZ0CYbTc57z4AwmYsjcDXewdIo2MDKD8DuERAxJyFBl0xgEEXAU3IuAFqT2DKtqICLAJUDsja8XoDZCozlAx1+FxKozug+R0QHMp5Fz9pygHtmZwAJevpr7DYmhUDOURARjajCIbipdsKcJwkYF0EpF3ZKQ3J4yfQSh/74RTxTi8c8rBwCu9IA15vgJCvE4M+kiDX2rnICgs1BA5OMW0AFVbednU5T4sGUCbXzft6/wClEg2jYQjYllw5UTH8AQTKCcGBzmEXAcFktInI4ycYWRngMNcrFWvOKiyuMllj8NoAcq8OVhbJTgE+51YysREwONOmAQQjb7sILYoaQIgGAO7r/QMEuFpTNRdP0Tv7LEx/rjwpgPoK0zIAvD4me5wDtJS/zaM/dF399eOyXl5hvXuYurDb+o+Ih6kCkAD0TQASf+f4ShGA3o8AJAB9qQhAApAAJAC9HwFIAPpSEYAEIAFIAHo/ApAA9KUiAAlAApAA9Iu9e1luG4TCAIykSBo6g8BCprLIQp3OtKvSLpp02fQyvSTv/z7JMquMY5B94PzfEyTODxwOOBwPAUKASEGAECAECAE6HgKEAJFSRoB+VQlcI0AneF9CgA4/qwS+jIKM279VJt4RGnan232uon16Q+i5PfOvysRHoo+mv465+xqdn/9eELL/U2XhexETkBBd/e36KsLD7w+TIOX2x80VeTf3e2KPXZ+s6ff1S97e1S/yB0HMKuvEdrs6MUnomdmNzYtgT2sBCBACdBQE6AkCRAcChABFsaQ26ZfRF9GyuRCV87PmiQx89kwbyPlZ80QcAhRBltLxOt1IrteVE28Fdwuhw7784NMTAWMoQjcI5lSLVTxCw34bNhM7Ls4NvePSMzNOQATNfQ3r0YiOMnNfwxbuU3CssRecoRcfy7ash6DhvoTH61gfqGIFizcyLiPRxkjAtqvgasBdjgTWluuBtEUXMYkD1wSxb6OmMjP6JsozhtDXtjNnJcNiwIZGQCKNY7ehtQF3WVLqZM/qYoOV3EbM1uw4MaqEVuQnPR0WLi0hLbF+bUDpwOKOuXIe9fM2lJau+LE5B95XELaldFv4LKSx/dqW0sGXW07baWC127wMs0hdZpXQT5h+zuLg2qG8j3qdGN9dOTfbS1/WNNSMS1G/D31mbEdTSsWgholLl4uQpvNyKGJTpoMuZShkZu4n3+deDpmAvdcFrYOcuozLBxNcxj99EZQZXK5nrUYu+A8cBCjT5ZghE1A7k6Hmzvms/hzrhPjQ8tje3fakDYVhHPc+zQGKQC10RQqWokhBwcmDw4FBHobC9v2/z1qw0azOFKxJy7l+L7wNvvQPgXPTNFtS8kZcPtpb5Ri+ZB4+pyEjDg2VymJeKxAHkqUYET9iPDVEvFAgRiQraeQj+wwv5GWcG0ae25AexfeoBZ0jn3hwGirrEVt1SDoX6wKTmHMbitC6TMpxbC3iZtNQ8HVZIZEMTcI7ZJZfVu48h61FHDkNaQFXrrKayoRmoWqbcMpcdn4mOZZe8SVZuSANfRt2KETVnnuL5DznPKtwHUuveHMbUj7+JyZbFLKlcqTI3JFHPgdAOvm4IbVLIRuoJY07cO+qQ+E0VP5fQ5JKoSsanKOgwyKd6EZCeu8PaQrdlCOgA1TwGvrygFRDT+Z0HXctODiFRP7NylX+soBwcHi4Xhu64ZqFgGB3BaWsOw3JnGsnCAj2Yelc59wtCAHBfmTu0hIICD4REJcREOxlm88NR0CwjxtNy+dyidIpAoJ94RwIEBDsBAFBtCAgQEAQGAKCaHk/oEwTAcEnArpPISBAQOD39QGNmq3bZYoGPSKqPNJVhqgzrFD3abl4JjJ7tYdWZuRNBCQ6X0DV33Z/yFJUY0T0a0YX6jM92R26tG97rEYms/tPjZXpTQQkOF9AGbVK1HsNiO4a/ekFbUx6ZLIK0YBdexMBCc4XkL0govs3AdF6k4l51Z41ltuAzHTTmwhIcL6AGs1/A+qxc/eh+Vn9vr0NiOaP3kRAgvMF1F5tAzpnY6LbGdH19LFRpzG7Jmq+BNRld95EQILzBXTGmt26nSLzODOuHM+oPu1Ta9Ix55dmd9bomCwz+r5Oj7yJgATnC4ge1OLCCYjOVqzVnJntNdF4PqTavGg/p2smsxlbDehl4mO86PwBkVmlrar/4Y7JKh33l83EQSLsuEx1w/EmTqIBAQG+zgE7QEAQLQgIEBAEhoAgWhAQICAIDAFBtCAgQEAQGAKCaEFAgIAgMAQE0YKA4FOyKoWOISCBqAMK2Z/iEYhDmVDI7MQRCORH6yeFqL7GbcIEo7NJKjQTljsCwWStRGgsvIEGAAAAAAAAAJH8BYu7Iww3DNvqAAAAAElFTkSuQmCC" width="576" height="388" class="img_ev3q"></p>
<p>那么最终当我们使用下面的命令编译<code>duxuiExample</code>模块的时候</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token comment" style="color:#93a1a1"># 调试小程序</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token function" style="color:#79b6f2">yarn</span><span class="token plain"> dev:weapp </span><span class="token parameter variable" style="color:#cb4b16">--app</span><span class="token operator" style="color:#fc929e">=</span><span class="token plain">duxuiExample</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token comment" style="color:#93a1a1"># 调试h5</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token function" style="color:#79b6f2">yarn</span><span class="token plain"> dev:h5 </span><span class="token parameter variable" style="color:#cb4b16">--app</span><span class="token operator" style="color:#fc929e">=</span><span class="token plain">duxuiExample</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>实际被编译的模块就包含下面这些</p>
<ul>
<li>duxuiExample</li>
<li>duxcms</li>
<li>amap</li>
<li>echarts</li>
<li>wechat</li>
<li>duxui</li>
<li>duxappReactNative</li>
<li>duxapp</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="使用duxapp">使用duxapp<a class="hash-link" aria-label="使用duxapp的直接链接" title="使用duxapp的直接链接" href="https://duxapp.com/blog/intro#%E4%BD%BF%E7%94%A8duxapp">​</a></h2>
<p>上面介绍了模块化的原理，现在我们来看看，具体要怎么使用这个框架</p>
<p>首先使用cli命令创建一个项目，中途会要求你选择模板，你可以选择 <code>duxui 示例代码(包含所有组件的示例代码 支持RN端)</code> 这个选项，和上面使用的示例一样</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token plain">npx duxapp-cli create projectName</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>在使用这个命令之前，确保安装了以下工具和环境</p>
<ul>
<li><a href="https://nodejs.cn/download/" target="_blank" rel="noopener noreferrer">nodejs 20+</a></li>
<li><a href="https://git-scm.com/downloads" target="_blank" rel="noopener noreferrer">git命令行工具</a></li>
<li>yarn<br>
<!-- -->使用命令 <code>npm i yarn -g</code> 安装</li>
</ul>
<p>安装后会自动安装项目依赖</p>
<p>进入项目目录<code>projectName</code>，使用上面提到的命令 <code>yarn dev:weapp --app=duxuiExample</code> 或者 <code>yarn dev:h5 --app=duxuiExample</code> 编译为小程序或者H5，使用开发者工具或者浏览器就能预览</p>
<p>可以看到编译命令是在Taro原有的命令基础上增加了 <code>--app=</code> 参数，参数用来指定一个模块，通常你都需要指定这个参数，因为你的项目中除了上面提到的模块之外，大多是时候还会存在其他模块，如果你不指定的话，他会把所有模块都打包进去</p>
<p>通过上面的描述可以看出，其实在一个项目中不是真的只有一个项目，在我的实际开发经验中，我是将很多项目放在一起开发的，我只需要通过 <code>--app=</code> 参数指定我的项目入口文件进行编译，他就是不同的项目</p>
<p>多个项目同时存在，如何保持他们不混乱呢，例如第三方npm依赖，每个项目可能都有不同的npm依赖，这通过下面的章节来介绍</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="模块">模块<a class="hash-link" aria-label="模块的直接链接" title="模块的直接链接" href="https://duxapp.com/blog/intro#%E6%A8%A1%E5%9D%97">​</a></h2>
<p>在duxapp框架中，<code>src</code>目录下每个文件夹将被识别为一个模块，模块一般是像下面这样设计结构的</p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token plain">├── duxapp                      模块名称</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">│   ├── components              模块组件库 </span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">│   │   ├── ComponentName       组件</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">│   │   │   └── index.jsx</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">│   │   └── index.js            导出需要导出的组件</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">│   ├── config                  配置目录 </span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">│   │   ├── route.js            路由配置文件（路径固定）</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">│   │   ├── theme.js            主题配置文件（路径固定）</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">│   │   └── themeToScss.js      主题转换函数（路径固定）</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">│   ├── pages                   页面放置文件夹</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">│   │   └── index               页面文件夹</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">│   │       ├── index.jsx       页面</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">│   │       └── index.scss</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">│   ├── utils                   工具库</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">│   │   ├── index.js            导出工具库</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">│   │   └── ...you util.js</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">│   ├── update                  模块安装目录</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">│   │   ├── copy                需要复制到项目的文件（路径固定）</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">│   │   │   └── ...             </span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">│   │   └── index.js            安装脚本 主要针对RN端 插件安装方法（路径固定）</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">│   ├── app.js                  模块入口文件</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">│   ├── app.json                模块配置文件 包括名称 依赖等（必须）</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">│   ├── app.scss                全局样式文件（次样式文件无需导入到js文件中，会自动注入全局）</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">│   ├── package.json            和项目的package.json相同，用于指定当前模块需要用到的三方依赖等</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">│   ├── changelog.md            更新日志（必须 如果发布）</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">│   ├── index.js                模块出口文件 可以导出组件和方法给其他模块使用</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">│   ├── index.html              如果是h5的项目可以自定义index.html，仅当作为入口模块时可用</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">│   ├── app.config.js           用于覆盖项目全局配置</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">│   ├── babel.config.js         babel配置文件</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">│   ├── metro.config.js         metro配置文件</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">│   ├── taro.config.js          Taro编译配置文件</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">│   ├── taro.config.prod.js     Taro 发布配置文件</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">│   ├── taro.config.dev.js      Taro 调试配置文件</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">│   └── readme.md               自述文件（必须 如果发布）</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>关于模块目录的详细内容查看这个 <a href="http://duxapp.com/docs/course/app/directory" target="_blank" rel="noopener noreferrer">模块结构</a> 获取</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="模块配置">模块配置<a class="hash-link" aria-label="模块配置的直接链接" title="模块配置的直接链接" href="https://duxapp.com/blog/intro#%E6%A8%A1%E5%9D%97%E9%85%8D%E7%BD%AE">​</a></h2>
<p>在duxui这个模块中，它的配置文件是这样的</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token property" style="color:#2aa198">"name"</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">"duxui"</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token property" style="color:#2aa198">"description"</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">"DUXUI库"</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token property" style="color:#2aa198">"version"</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">"1.0.42"</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token property" style="color:#2aa198">"dependencies"</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token string" style="color:#8dc891">"duxapp"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>我们看到，他有一个字段 <code>npm</code>，(新版本中，这个配置已经移动到模块的<code>package.json</code>文件中)它的内容和项目的 <code>package.json</code> 的配置是完全一样的，在模块中编写这个内容，将会和项目的 <code>package.json</code> 进行覆盖合并，那么你就可以通过模块来安装当前模块需要依赖了，每个模块中都可以指定这个依赖，他们会合并在一起</p>
<p>当你指定了不同的 <code>--app=</code> 入口模块之后，框架会根据你使用到的模块中的第三方依赖自动重新安装</p>
<p>在模块中还有很多类似的设计，用来编写配置或者文件，包括下面这些</p>
<ul>
<li>app.scss 编写全局样式</li>
<li>index.html 如果是h5的项目可以自定义index.html，仅当作为入口模块时可用</li>
<li>app.config.js 用于覆盖项目全局配置</li>
<li>babel.config.js babel配置文件</li>
<li>metro.config.js metro配置文件</li>
<li>taro.config.js Taro编译配置文件</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="模块路由">模块路由<a class="hash-link" aria-label="模块路由的直接链接" title="模块路由的直接链接" href="https://duxapp.com/blog/intro#%E6%A8%A1%E5%9D%97%E8%B7%AF%E7%94%B1">​</a></h2>
<p>每个模块中都可以编写页面，当然这不是必选项，这些页面会被定义在自己的模块中</p>
<p>通过 <code>modeName/config/route.js</code> 定义当前的模块路由，例如 <code>duxuiExample</code> 的路由定义如下</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token doc-comment comment" style="color:#93a1a1">/**</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token doc-comment comment" style="color:#93a1a1"> * login:是否需要登录</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token doc-comment comment" style="color:#93a1a1"> * platform:支持的平台(weapp, h5, rn)不配置支持所有</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token doc-comment comment" style="color:#93a1a1"> * subPackage:是否将其设置为分包</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token doc-comment comment" style="color:#93a1a1"> * home: 是否是主页 是主页的页面将会被排在前面</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token doc-comment comment" style="color:#93a1a1"> */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token keyword module" style="color:#c5a5c5">export</span><span class="token plain"> </span><span class="token keyword module" style="color:#c5a5c5">default</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token literal-property property" style="color:#2aa198">pages</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token string-property property" style="color:#2aa198">'duxuiExample/index'</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token literal-property property" style="color:#2aa198">pages</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">index</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token literal-property property" style="color:#2aa198">home</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token boolean" style="color:#ff8b50">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token string-property property" style="color:#2aa198">'duxuiExample/example'</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token literal-property property" style="color:#2aa198">pages</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">Button</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">Cell</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">Grid</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">Divider</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">Space</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token comment" style="color:#93a1a1">// 更多未展示</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>路由的定义也是经过封装的，配置的时候是将一个文件夹作为一个对象来处理，这样我们能很方便的将某个文件夹进行分包等操作</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="使用ui库和全局样式编写页面">使用UI库和全局样式编写页面<a class="hash-link" aria-label="使用UI库和全局样式编写页面的直接链接" title="使用UI库和全局样式编写页面的直接链接" href="https://duxapp.com/blog/intro#%E4%BD%BF%E7%94%A8ui%E5%BA%93%E5%92%8C%E5%85%A8%E5%B1%80%E6%A0%B7%E5%BC%8F%E7%BC%96%E5%86%99%E9%A1%B5%E9%9D%A2">​</a></h2>
<p>在基础模块 <code>duxapp</code> 中提供了可以用于快速布局页面的全局样式，他就和 <code>tailwindcss</code> 类似，在结合UI组件，编写页面像下面这样的，可以看到我们不需要编写 <code>scss</code> 文件就能完成页面的编写</p>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token keyword module" style="color:#c5a5c5">import</span><span class="token plain"> </span><span class="token imports punctuation" style="color:#657b83">{</span><span class="token imports"> </span><span class="token imports maybe-class-name">Avatar</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">Card</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">ScrollView</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">Column</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">Divider</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">Header</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">Text</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">TopView</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">Row</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> px</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">Image</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> nav</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">Tag</span><span class="token imports"> </span><span class="token imports punctuation" style="color:#657b83">}</span><span class="token plain"> </span><span class="token keyword module" style="color:#c5a5c5">from</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'@/duxui'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token keyword module" style="color:#c5a5c5">import</span><span class="token plain"> </span><span class="token imports punctuation" style="color:#657b83">{</span><span class="token imports"> useRequest</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">CmsIcon</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> saleHook</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">Qrcode</span><span class="token imports"> </span><span class="token imports punctuation" style="color:#657b83">}</span><span class="token plain"> </span><span class="token keyword module" style="color:#c5a5c5">from</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'@/duxcmsSale'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token keyword module" style="color:#c5a5c5">import</span><span class="token plain"> </span><span class="token imports punctuation" style="color:#657b83">{</span><span class="token imports"> setClipboardData </span><span class="token imports punctuation" style="color:#657b83">}</span><span class="token plain"> </span><span class="token keyword module" style="color:#c5a5c5">from</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'@tarojs/taro'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token keyword module" style="color:#c5a5c5">export</span><span class="token plain"> </span><span class="token keyword module" style="color:#c5a5c5">default</span><span class="token plain"> </span><span class="token keyword" style="color:#c5a5c5">function</span><span class="token plain"> </span><span class="token function maybe-class-name" style="color:#79b6f2">Sale</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">[</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"> info </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> day </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> money</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> total </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">]</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token function" style="color:#79b6f2">useRequest</span><span class="token punctuation" style="color:#657b83">(</span><span class="token string" style="color:#8dc891">'sale/index'</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#c5a5c5">return</span><span class="token plain"> </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">TopView</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Header</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">absolute</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">title</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">推广中心</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">color</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">#FFFFFF</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">style</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript literal-property property" style="color:#2aa198">backgroundColor</span><span class="token tag script language-javascript operator" style="color:#fc929e">:</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript string" style="color:#8dc891">'transparent'</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag punctuation" style="color:#657b83">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Image</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">style</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript literal-property property" style="color:#2aa198">height</span><span class="token tag script language-javascript operator" style="color:#fc929e">:</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript function" style="color:#79b6f2">px</span><span class="token tag script language-javascript punctuation" style="color:#657b83">(</span><span class="token tag script language-javascript number" style="color:#5a9bcf">396</span><span class="token tag script language-javascript punctuation" style="color:#657b83">)</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">w-full absolute</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">src</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript function" style="color:#79b6f2">require</span><span class="token tag script language-javascript punctuation" style="color:#657b83">(</span><span class="token tag script language-javascript string" style="color:#8dc891">'./images/tui_bag.png'</span><span class="token tag script language-javascript punctuation" style="color:#657b83">)</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag punctuation" style="color:#657b83">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">justify</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">between</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">items</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">center</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">style</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript literal-property property" style="color:#2aa198">marginTop</span><span class="token tag script language-javascript operator" style="color:#fc929e">:</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript function" style="color:#79b6f2">px</span><span class="token tag script language-javascript punctuation" style="color:#657b83">(</span><span class="token tag script language-javascript number" style="color:#5a9bcf">208</span><span class="token tag script language-javascript punctuation" style="color:#657b83">)</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">mt-3 ph-3</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">items</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">center</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">justify</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">start</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Avatar</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">url</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e">info</span><span class="token tag script language-javascript punctuation" style="color:#657b83">.</span><span class="token tag script language-javascript property-access" style="color:#fc929e">avatar</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain">info</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">nickname</span><span class="token punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Avatar</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Column</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">mh-3</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">items</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">center</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">gap-2</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">            </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">33</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">bold</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">color</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">#FFFFFF</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain">info</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">nickname</span><span class="token punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">            </span><span class="token punctuation" style="color:#657b83">{</span><span class="token operator" style="color:#fc929e">!</span><span class="token operator" style="color:#fc929e">!</span><span class="token plain">info</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">level_name</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">&amp;&amp;</span><span class="token plain"> </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Tag</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">type</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">primary</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">s</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain">info</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">level_name</span><span class="token punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Tag</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">mt-2</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">            </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">color</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">#FFFFFF</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">1</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text">邀请码：</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain">info</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">code</span><span class="token punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">            </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">CmsIcon</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">mh-2</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">36</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">name</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">copy</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">color</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">#FFFFFF</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">onClick</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript punctuation" style="color:#657b83">(</span><span class="token tag script language-javascript punctuation" style="color:#657b83">)</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript arrow operator" style="color:#fc929e">=&gt;</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript function" style="color:#79b6f2">setClipboardData</span><span class="token tag script language-javascript punctuation" style="color:#657b83">(</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript literal-property property" style="color:#2aa198">data</span><span class="token tag script language-javascript operator" style="color:#fc929e">:</span><span class="token tag script language-javascript" style="color:#fc929e"> info</span><span class="token tag script language-javascript punctuation" style="color:#657b83">.</span><span class="token tag script language-javascript property-access" style="color:#fc929e">code</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag script language-javascript punctuation" style="color:#657b83">)</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag punctuation" style="color:#657b83">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Column</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">CmsIcon</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">60</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">name</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">QRcode1</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">color</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">#FFFFFF</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">onClick</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript maybe-class-name" style="color:#fc929e">Qrcode</span><span class="token tag script language-javascript punctuation" style="color:#657b83">.</span><span class="token tag script language-javascript property-access" style="color:#fc929e">show</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag punctuation" style="color:#657b83">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">ScrollView</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">mt-3</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Card</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">margin</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">disableMarginTop</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">jtems</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">center</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">justify</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">between</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">gap-3</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Column</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">justify</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">center</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">items</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">center</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">grow</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">            </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">bold</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">type</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">primary</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain">total</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">order_num</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">||</span><span class="token plain"> </span><span class="token number" style="color:#5a9bcf">0</span><span class="token punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">            </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">color</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">2</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">2</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">mt-2</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text">直推订单</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Column</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Column</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">justify</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">center</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">items</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">center</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">grow</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">            </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">bold</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">type</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">primary</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain">total</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">user_num</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">||</span><span class="token plain"> </span><span class="token number" style="color:#5a9bcf">0</span><span class="token punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">            </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">color</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">2</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">2</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">mt-2</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text">直推客户</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Column</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">mt-2</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">jtems</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">center</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">justify</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">between</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Column</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">justify</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">center</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">items</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">center</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">grow</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">            </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">bold</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">type</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">primary</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain">total</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">month_sale_money</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">||</span><span class="token plain"> </span><span class="token number" style="color:#5a9bcf">0</span><span class="token punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">            </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">color</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">2</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">2</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">mt-2</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text">本月收益</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Column</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Column</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">justify</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">center</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">items</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">center</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">grow</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">            </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">bold</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">type</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">primary</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain">total</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">sale_money</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">||</span><span class="token plain"> </span><span class="token number" style="color:#5a9bcf">0</span><span class="token punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">            </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">color</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">2</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">2</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">mt-2</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text">累计收益</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Column</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Card</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Card</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">shadow</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">margin</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">disableMarginTop</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">onClick</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript punctuation" style="color:#657b83">(</span><span class="token tag script language-javascript punctuation" style="color:#657b83">)</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript arrow operator" style="color:#fc929e">=&gt;</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript function" style="color:#79b6f2">nav</span><span class="token tag script language-javascript punctuation" style="color:#657b83">(</span><span class="token tag script language-javascript string" style="color:#8dc891">'duxcmsAccount/cash/index'</span><span class="token tag script language-javascript punctuation" style="color:#657b83">)</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">items</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">center</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">justify</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">between</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">bold</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text">佣金管理</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">CmsIcon</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">name</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">direction_right</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">32</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag punctuation" style="color:#657b83">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">mt-3</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">items</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">baseline</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">2</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text">可提现佣金:</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">mh-3</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">bold</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">50</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain">money </span><span class="token operator" style="color:#fc929e">||</span><span class="token plain"> </span><span class="token number" style="color:#5a9bcf">0</span><span class="token punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Card</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Card</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">margin</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">disableMarginTop</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">items</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">center</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">justify</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">around</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Column</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">items</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">center</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">            </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">2</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text">今日预估收益</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">            </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">mt-1</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">bold</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">40</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain">day</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">sale_money</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">||</span><span class="token plain"> </span><span class="token number" style="color:#5a9bcf">0</span><span class="token punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Column</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Column</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">items</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">center</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">            </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">2</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text">今日有效订单</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">            </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">mt-1</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">bold</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">40</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain">day</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">order_num</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">||</span><span class="token plain"> </span><span class="token number" style="color:#5a9bcf">0</span><span class="token punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Column</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Column</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">items</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">center</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">            </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">2</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text">今日新增客户</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">            </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">mt-1</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">bold</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">40</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain">day</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">user_num</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">||</span><span class="token plain"> </span><span class="token number" style="color:#5a9bcf">0</span><span class="token punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Column</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Card</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Card</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">margin</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">gap-4</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">4</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">bold</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text">其他操作</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">justify</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">between</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">items</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">center</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">onClick</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript punctuation" style="color:#657b83">(</span><span class="token tag script language-javascript punctuation" style="color:#657b83">)</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript arrow operator" style="color:#fc929e">=&gt;</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript function" style="color:#79b6f2">nav</span><span class="token tag script language-javascript punctuation" style="color:#657b83">(</span><span class="token tag script language-javascript string" style="color:#8dc891">'duxcmsSale/index/order'</span><span class="token tag script language-javascript punctuation" style="color:#657b83">)</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">2</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">mh-2</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">bold</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text">推广订单</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">CmsIcon</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">name</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">direction_right</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">32</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag punctuation" style="color:#657b83">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">justify</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">between</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">items</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">center</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">onClick</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript punctuation" style="color:#657b83">(</span><span class="token tag script language-javascript punctuation" style="color:#657b83">)</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript arrow operator" style="color:#fc929e">=&gt;</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript function" style="color:#79b6f2">nav</span><span class="token tag script language-javascript punctuation" style="color:#657b83">(</span><span class="token tag script language-javascript string" style="color:#8dc891">'duxcmsSale/index/customer'</span><span class="token tag script language-javascript punctuation" style="color:#657b83">)</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">2</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">mh-2</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">bold</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text">我的客户</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">CmsIcon</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">name</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">direction_right</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">32</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag punctuation" style="color:#657b83">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag" style="color:#fc929e">saleHook.Render</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">mark</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">index.menus</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag punctuation" style="color:#657b83">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Card</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">style</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript literal-property property" style="color:#2aa198">height</span><span class="token tag script language-javascript operator" style="color:#fc929e">:</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript function" style="color:#79b6f2">px</span><span class="token tag script language-javascript punctuation" style="color:#657b83">(</span><span class="token tag script language-javascript number" style="color:#5a9bcf">16</span><span class="token tag script language-javascript punctuation" style="color:#657b83">)</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">ScrollView</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">  </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">TopView</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>为何获得更好的编辑体验，需要在vscode中安装 <a href="https://marketplace.visualstudio.com/items?itemName=gencer.html-slim-scss-css-class-completion" target="_blank" rel="noopener noreferrer">SCSS Everywhere</a> 插件，他能识别到全局样式并给出编写提示</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="用户配置">用户配置<a class="hash-link" aria-label="用户配置的直接链接" title="用户配置的直接链接" href="https://duxapp.com/blog/intro#%E7%94%A8%E6%88%B7%E9%85%8D%E7%BD%AE">​</a></h2>
<p>很多模块都是通用的，那么一些需要根据不同项目变化的内容，就不能写在模块中，而是要通过配置的形式来配置</p>
<p>项目配置放在项目根目录下的 <code>configs</code> 目录中，其中每个文件夹就是一个配置，文件中的<code>index.js</code>就是项目配置</p>
<p>像下面这个<code>duxuiExample</code>的配置，其中<code>option</code>中的每一项就是对应模块的配置</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token comment" style="color:#93a1a1">// import qiniu from './base/components/UploadFileManage/drive/qiniu'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> config </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token comment" style="color:#93a1a1">// 覆盖app.config.js 配置</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token literal-property property" style="color:#2aa198">appConfig</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token literal-property property" style="color:#2aa198">requiredPrivateInfos</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token string" style="color:#8dc891">'chooseLocation'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token string" style="color:#8dc891">'getLocation'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token string" style="color:#8dc891">'onLocationChange'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token string" style="color:#8dc891">'startLocationUpdateBackground'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token string" style="color:#8dc891">'chooseAddress'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token punctuation" style="color:#657b83">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token comment" style="color:#93a1a1">// 调试配置</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token literal-property property" style="color:#2aa198">debug</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token comment" style="color:#93a1a1">// 在h5端开启vconsole调试功能</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token literal-property property" style="color:#2aa198">vconsole</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token boolean" style="color:#ff8b50">false</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token comment" style="color:#93a1a1">// 模块配置 将会调用模块生命周期的option，将对应模块的参数传入</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token literal-property property" style="color:#2aa198">option</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token comment" style="color:#93a1a1">// 基础模块</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token literal-property property" style="color:#2aa198">duxapp</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token literal-property property" style="color:#2aa198">theme</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">primaryColor</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'#E70012'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">secondaryColor</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'#E84C00'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">successColor</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'#34a853'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">warningColor</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'#fbbc05'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">dangerColor</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'#ea4335'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">pageColor</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'#F7F9FC'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">textColor1</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'#373D52'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">textColor2</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'#73778E'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">textColor3</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'#A1A6B6'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">textColor4</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'#FFF'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">header</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token literal-property property" style="color:#2aa198">color</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'#fff'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> </span><span class="token comment" style="color:#93a1a1">// 仅支持rgb hex值，请勿使用纯单词 设置为数组将显示一个渐变按钮</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token literal-property property" style="color:#2aa198">textColor</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'#000'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> </span><span class="token comment" style="color:#93a1a1">// 文本颜色</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token literal-property property" style="color:#2aa198">showWechat</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token boolean" style="color:#ff8b50">false</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> </span><span class="token comment" style="color:#93a1a1">// 微信公众号是否显示header</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token literal-property property" style="color:#2aa198">showWap</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token boolean" style="color:#ff8b50">true</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> </span><span class="token comment" style="color:#93a1a1">// h5是否显示header</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token literal-property property" style="color:#2aa198">wechat</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token comment" style="color:#93a1a1">// 分享组件配置</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token literal-property property" style="color:#2aa198">share</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">open</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token boolean" style="color:#ff8b50">true</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token comment" style="color:#93a1a1">// 开启未定义的页面分享</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">pageSlef</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token comment" style="color:#93a1a1">// 包含这些页面分享自身 页面路径关键词匹配 include 优先级比 exclude 高，</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token comment" style="color:#93a1a1">// 可以配置exclude为空数组表示支持所有页面</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token comment" style="color:#93a1a1">// pageSlef优先级高于pageHome</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token comment" style="color:#93a1a1">// include: ['page/test'],</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token comment" style="color:#93a1a1">// 排除这些页面 不进行分享</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token literal-property property" style="color:#2aa198">exclude</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">[</span><span class="token punctuation" style="color:#657b83">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token comment" style="color:#93a1a1">// 开启未定义的页面分享到指定页面</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">pageHome</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token literal-property property" style="color:#2aa198">path</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">''</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token literal-property property" style="color:#2aa198">params</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token comment" style="color:#93a1a1">// 包含这些页面分享自身 页面路径关键词匹配</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token comment" style="color:#93a1a1">// include: [],</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token comment" style="color:#93a1a1">// 排除这些页面 不进行分享</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token comment" style="color:#93a1a1">// exclude: []</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token comment" style="color:#93a1a1">// 公共分享参数</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">common</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token literal-property property" style="color:#2aa198">title</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'DUXUI'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token literal-property property" style="color:#2aa198">desc</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'同时兼容小程序、H5、RN'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token literal-property property" style="color:#2aa198">image</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'https://img.zhenxinhuixuan.com/weiwait/cropper/2lVCofRIu6Jl3jNebxCA6VkEMUeaobvLWFYMTiaG.jpg'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">platform</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token literal-property property" style="color:#2aa198">app</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">            </span><span class="token comment" style="color:#93a1a1">// 配置分享到小程序的原始id 同时相当于开关</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">            </span><span class="token literal-property property" style="color:#2aa198">weappUserName</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">''</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">            </span><span class="token comment" style="color:#93a1a1">// 配置分享到h5的url 同时相当于开关</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">            </span><span class="token literal-property property" style="color:#2aa198">h5Url</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'https://duxui.cn'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">          </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token comment" style="color:#93a1a1">// 新php模块化系统</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token literal-property property" style="color:#2aa198">duxcms</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token literal-property property" style="color:#2aa198">request</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">origin</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'https://mock.dux.plus'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">path</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'api'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> </span><span class="token comment" style="color:#93a1a1">// 域名二级目录</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">secretId</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'53368068'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">secretKey</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'6c278fbf1791fbed3ae79197de03f65f'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">devOpen</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token boolean" style="color:#ff8b50">false</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">devToken</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJtZW1iZXIiLCJpYXQiOjE2ODc5Mzg3NDEsImV4cCI6MTY5MDUzMDc0MSwiaWQiOjZ9.kCb82Y3bgUJWUo_WYsUPO1cLYzF1OJdEWTKAj9iNlF0'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token comment" style="color:#93a1a1">// 登录相关配置</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token literal-property property" style="color:#2aa198">loginConfig</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token comment" style="color:#93a1a1">// 手机号登录</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">phone</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token boolean" style="color:#ff8b50">true</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token comment" style="color:#93a1a1">// 邮箱登录</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">email</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token boolean" style="color:#ff8b50">false</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token comment" style="color:#93a1a1">// app微信登录</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">appWatch</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token boolean" style="color:#ff8b50">true</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token comment" style="color:#93a1a1">// 小程序微信登录</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">weappWatch</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token boolean" style="color:#ff8b50">true</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token comment" style="color:#93a1a1">// 名称</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">        </span><span class="token literal-property property" style="color:#2aa198">appName</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'duxui'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token keyword module" style="color:#c5a5c5">export</span><span class="token plain"> </span><span class="token keyword module" style="color:#c5a5c5">default</span><span class="token plain"> config</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="后端框架">后端框架<a class="hash-link" aria-label="后端框架的直接链接" title="后端框架的直接链接" href="https://duxapp.com/blog/intro#%E5%90%8E%E7%AB%AF%E6%A1%86%E6%9E%B6">​</a></h2>
<p>在我开发的项目中，后端框架是我的合伙人负责的，后端同样也是采用模块化的开发模式完成的，duxapp框架对后端框架已经打好了对接的基础，如果你考虑进一步提升后端的开发效率，可以考虑使用</p>
<p>后端开发文档：<a href="https://www.dux.cn/" target="_blank" rel="noopener noreferrer">https://www.dux.cn/</a></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="总结">总结<a class="hash-link" aria-label="总结的直接链接" title="总结的直接链接" href="https://duxapp.com/blog/intro#%E6%80%BB%E7%BB%93">​</a></h2>
<p>这一篇文章已经很长了，duxapp框架中还有很多内容，无法在这里一一介绍，像下面这些</p>
<ul>
<li>模块主题</li>
<li>模块安装与发布</li>
<li>快速开发APP(React Native)</li>
<li>请求上传</li>
<li>路由系统</li>
<li>开放模块(用户管理、微信、支付宝、页面设计器等)</li>
<li>等等</li>
</ul>
<p>请前往开发文档查看详细教程</p>
<p>开发文档：<a href="http://duxapp.com/" target="_blank" rel="noopener noreferrer">http://duxapp.com/</a></p>
<p>GitHub：<a href="https://github.com/duxapp" target="_blank" rel="noopener noreferrer">https://github.com/duxapp</a></p>]]></content:encoded>
            <category>duxapp</category>
            <category>项目</category>
            <category>介绍</category>
        </item>
        <item>
            <title><![CDATA[2024-09 升级到Taro4 RN0.75]]></title>
            <link>https://duxapp.com/blog/240922-update</link>
            <guid>https://duxapp.com/blog/240922-update</guid>
            <pubDate>Sun, 22 Sep 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[整理最近更新的内容]]></description>
            <content:encoded><![CDATA[<p>在此次更新之前的版本中，Taro使用的是3.6.7，RN使用的是0.71，在这次升级中将Taro和RN都更新到了最新版本，让我们来看看这次更新中都有哪些变化</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="完善的开发文档">完善的开发文档<a class="hash-link" aria-label="完善的开发文档的直接链接" title="完善的开发文档的直接链接" href="https://duxapp.com/blog/240922-update#%E5%AE%8C%E5%96%84%E7%9A%84%E5%BC%80%E5%8F%91%E6%96%87%E6%A1%A3">​</a></h2>
<p>这次更新后，对duxapp进行了阶段性的总结，于是将开发文档进行了全面的完善，包括基础教程、基础模块教程、UI库教程等等模块的教程</p>
<p>点击导航栏去查看它们</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="模块更新">模块更新<a class="hash-link" aria-label="模块更新的直接链接" title="模块更新的直接链接" href="https://duxapp.com/blog/240922-update#%E6%A8%A1%E5%9D%97%E6%9B%B4%E6%96%B0">​</a></h2>
<ul>
<li>将duxui库的types进行了全面的完善</li>
<li>将公共模块进行了全面更新以兼容新版本的RN和Taro</li>
<li>将这些模块重新发布到了应用市场</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="taro升级40">Taro升级4.0<a class="hash-link" aria-label="Taro升级4.0的直接链接" title="Taro升级4.0的直接链接" href="https://duxapp.com/blog/240922-update#taro%E5%8D%87%E7%BA%A740">​</a></h2>
<p>Taro4.0主要是新增了对鸿蒙的支持、支持Vite编译等</p>
<p>这个版本对小程序和H5端的影响不是很大，但是对RN升级有影响，只有4.0的版本才能将RN升级到0.75</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="rn升级075">RN升级0.75<a class="hash-link" aria-label="RN升级0.75的直接链接" title="RN升级0.75的直接链接" href="https://duxapp.com/blog/240922-update#rn%E5%8D%87%E7%BA%A7075">​</a></h2>
<p>从0.71到0.75的升级RN为我们带来了诸多好处</p>
<ul>
<li>开启新架构后依然能兼容不支持新架构的模块 所以在升级到0.75后，新架构是默认开启的，这可以为你的APP提供更好的性能</li>
<li>更完善的样式布局，例如新增了对<code>transform-origin</code>、<code>translate</code>百分比、<code>gap</code>百分比、<code>position: 'static'</code>等样式的支持</li>
<li>更多更新你可以查看 <a href="https://reactnative.dev/blog" target="_blank" rel="noopener noreferrer">RN 博客</a></li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="三方依赖更新">三方依赖更新<a class="hash-link" aria-label="三方依赖更新的直接链接" title="三方依赖更新的直接链接" href="https://duxapp.com/blog/240922-update#%E4%B8%89%E6%96%B9%E4%BE%9D%E8%B5%96%E6%9B%B4%E6%96%B0">​</a></h2>
<ul>
<li>将RN的依赖都更新到了最新的版本</li>
<li>移除了<code>react-native-fs</code>依赖，因为这个依赖已经不更新了，使用<code>expo-file-system</code></li>
<li>移除了<code>rn-fetch-blob</code>依赖，也是不更新，将其替换为<code>react-native-blob-util</code></li>
<li>新增了<code>expo-image</code>用于RN端图片的实现</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="导入方式变更">导入方式变更<a class="hash-link" aria-label="导入方式变更的直接链接" title="导入方式变更的直接链接" href="https://duxapp.com/blog/240922-update#%E5%AF%BC%E5%85%A5%E6%96%B9%E5%BC%8F%E5%8F%98%E6%9B%B4">​</a></h2>
<p>不支持这种方式导入</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token keyword module" style="color:#c5a5c5">import</span><span class="token plain"> </span><span class="token imports maybe-class-name">Taro</span><span class="token plain"> </span><span class="token keyword module" style="color:#c5a5c5">from</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'@tarojs/taro'</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>需要修改为这种方式</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token keyword module" style="color:#c5a5c5">import</span><span class="token plain"> </span><span class="token imports punctuation" style="color:#657b83">{</span><span class="token imports"> showModal </span><span class="token imports punctuation" style="color:#657b83">}</span><span class="token plain"> </span><span class="token keyword module" style="color:#c5a5c5">from</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'@tarojs/taro'</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="cli更新">CLI更新<a class="hash-link" aria-label="CLI更新的直接链接" title="CLI更新的直接链接" href="https://duxapp.com/blog/240922-update#cli%E6%9B%B4%E6%96%B0">​</a></h2>
<p>对cli更新，提供了更完善的支持</p>
<ul>
<li>新增模块 <code>app.config.js</code> 全局配置的支持</li>
<li>对入口文件<code>app.js</code>修改为可选</li>
<li>对路由配置文件<code>config/route.js</code>修改为可选</li>
<li>优化创建项目命令</li>
<li>安卓更新脚本支持对xml文件处理</li>
<li>更新脚本支持创建文件</li>
<li>自动更新项目公共文件，让你的项目保持最新</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="如何更新到最新版">如何更新到最新版<a class="hash-link" aria-label="如何更新到最新版的直接链接" title="如何更新到最新版的直接链接" href="https://duxapp.com/blog/240922-update#%E5%A6%82%E4%BD%95%E6%9B%B4%E6%96%B0%E5%88%B0%E6%9C%80%E6%96%B0%E7%89%88">​</a></h2>
<p>更新其实也比较简单，将你依赖的公共模块都升级到最新版本</p>
<p>例如你是用了duxui <code>yarn duxapp add duxui</code>，就更新它，然后重新编译即可</p>
<p>当然更新有风险，你可能还需要对现有代码进行一些兼容性修改才能正常运行，需要谨慎操作</p>]]></content:encoded>
            <category>duxapp</category>
            <category>更新</category>
        </item>
        <item>
            <title><![CDATA[用duxapp快速完成项目]]></title>
            <link>https://duxapp.com/blog/quick-prject</link>
            <guid>https://duxapp.com/blog/quick-prject</guid>
            <pubDate>Sun, 22 Sep 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[通过duxapp提供的基础方法、UI组件、全局样式，快速编写项目]]></description>
            <content:encoded><![CDATA[<p>使用duxapp，我是如何实现快速完成项目开发的？</p>
<p>像下面这个例子，这个项目有140多个页面，但是真实的开发时间，在熟练使用duxapp的情况下，不会超过两周，并且可以将它兼容APP、小程序、H5</p>
<p><img decoding="async" loading="lazy" alt="p1" src="https://duxapp.com/assets/images/image1-e6aab734d7bec11b5a77314452d844d8.png" width="2020" height="1151" class="img_ev3q">
<img decoding="async" loading="lazy" alt="p2" src="https://duxapp.com/assets/images/image2-b1a49749d0bdc7f79726ba62ac57c563.png" width="2011" height="1154" class="img_ev3q">
<img decoding="async" loading="lazy" alt="p3" src="https://duxapp.com/assets/images/image3-1f9a8d925d918035ed0df1e9be166e1d.png" width="2015" height="1153" class="img_ev3q"></p>
<p>这里仅展示了其中一部分页面，这个项目主要包含下这些功能</p>
<ul>
<li>购物订单流程</li>
<li>售后退换</li>
<li>文章发布</li>
<li>门店功能</li>
<li>送货人员功能</li>
<li>经销商功能</li>
<li>扫码抽奖</li>
<li>等其他功能</li>
</ul>
<p>下面我将详细介绍使用了哪些方法，来快速完成项目</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="使用全局样式快速布局页面">使用全局样式快速布局页面<a class="hash-link" aria-label="使用全局样式快速布局页面的直接链接" title="使用全局样式快速布局页面的直接链接" href="https://duxapp.com/blog/quick-prject#%E4%BD%BF%E7%94%A8%E5%85%A8%E5%B1%80%E6%A0%B7%E5%BC%8F%E5%BF%AB%E9%80%9F%E5%B8%83%E5%B1%80%E9%A1%B5%E9%9D%A2">​</a></h2>
<p>以这个门店管理首页为例，你可以看到我并没有导入一个<code>scss</code>文件，但是我使用了很多的<code>className</code>，这些就是用的全局样式，这全局样式都是<a href="https://duxapp.com/docs/duxapp/css">duxapp模块提供的</a></p>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token keyword module" style="color:#c5a5c5">import</span><span class="token plain"> </span><span class="token imports punctuation" style="color:#657b83">{</span><span class="token imports"> </span><span class="token imports maybe-class-name">TopView</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">Header</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">Card</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">Divider</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">ScrollView</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">Tag</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">Row</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">Image</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">Column</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">Text</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> px</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> nav</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">ModalForm</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">DatePicker</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> dayjs </span><span class="token imports punctuation" style="color:#657b83">}</span><span class="token plain"> </span><span class="token keyword module" style="color:#c5a5c5">from</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'@/duxui'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token keyword module" style="color:#c5a5c5">import</span><span class="token plain"> </span><span class="token imports punctuation" style="color:#657b83">{</span><span class="token imports"> </span><span class="token imports maybe-class-name">ArecaIcon</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">CmsIcon</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">TipNav</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> useRequest </span><span class="token imports punctuation" style="color:#657b83">}</span><span class="token plain"> </span><span class="token keyword module" style="color:#c5a5c5">from</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'@/arecaShop'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token keyword module" style="color:#c5a5c5">import</span><span class="token plain"> </span><span class="token imports punctuation" style="color:#657b83">{</span><span class="token imports"> useState </span><span class="token imports punctuation" style="color:#657b83">}</span><span class="token plain"> </span><span class="token keyword module" style="color:#c5a5c5">from</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'react'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token keyword module" style="color:#c5a5c5">export</span><span class="token plain"> </span><span class="token keyword module" style="color:#c5a5c5">default</span><span class="token plain"> </span><span class="token keyword" style="color:#c5a5c5">function</span><span class="token plain"> </span><span class="token function maybe-class-name" style="color:#79b6f2">StoreManage</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">[</span><span class="token plain">date</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> setDate</span><span class="token punctuation" style="color:#657b83">]</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token function" style="color:#79b6f2">useState</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">[</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"> info </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> sku </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> distribution </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">]</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token function" style="color:#79b6f2">useRequest</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token literal-property property" style="color:#2aa198">url</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'store/index'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token literal-property property" style="color:#2aa198">toast</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token boolean" style="color:#ff8b50">true</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token literal-property property" style="color:#2aa198">data</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      date</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"> </span><span class="token literal-property property" style="color:#2aa198">reloadForShow</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token boolean" style="color:#ff8b50">true</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#c5a5c5">return</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">TopView</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Header</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">title</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">门店详情</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag punctuation" style="color:#657b83">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">ScrollView</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Card</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">p-2 gap-2</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">margin</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">disableMarginBottom</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">gap-2</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">            </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Image</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">r-2</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">              </span><span class="token tag attr-name" style="color:#c5a5c5">src</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e">info</span><span class="token tag script language-javascript punctuation" style="color:#657b83">.</span><span class="token tag script language-javascript property-access" style="color:#fc929e">image</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">              </span><span class="token tag attr-name" style="color:#c5a5c5">style</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript literal-property property" style="color:#2aa198">width</span><span class="token tag script language-javascript operator" style="color:#fc929e">:</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript function" style="color:#79b6f2">px</span><span class="token tag script language-javascript punctuation" style="color:#657b83">(</span><span class="token tag script language-javascript number" style="color:#5a9bcf">148</span><span class="token tag script language-javascript punctuation" style="color:#657b83">)</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">              </span><span class="token tag attr-name" style="color:#c5a5c5">square</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">            </span><span class="token tag punctuation" style="color:#657b83">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">            </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Column</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">justify</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">between</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">grow</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">              </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">justify</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">between</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">grow</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">                </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">bold</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">4</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain">info</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">name</span><span class="token punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">                </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">ArecaIcon</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">name</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">shezhi</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">text-c1 text-s7</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">                  </span><span class="token tag attr-name" style="color:#c5a5c5">onClick</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript punctuation" style="color:#657b83">(</span><span class="token tag script language-javascript punctuation" style="color:#657b83">)</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript arrow operator" style="color:#fc929e">=&gt;</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript function" style="color:#79b6f2">nav</span><span class="token tag script language-javascript punctuation" style="color:#657b83">(</span><span class="token tag script language-javascript string" style="color:#8dc891">'arecaShop/storeManage/info'</span><span class="token tag script language-javascript punctuation" style="color:#657b83">)</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">                </span><span class="token tag punctuation" style="color:#657b83">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">              </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">              </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Column</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">                </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">color</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">2</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">1</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text">联系人：</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain">info</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">contact</span><span class="token punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">                </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">grow</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">justify</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">between</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">items</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">center</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">                  </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">color</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">2</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">1</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">                  </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Tag</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">type</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">secondary</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">s</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">radiusType</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">round</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">onClick</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript punctuation" style="color:#657b83">(</span><span class="token tag script language-javascript punctuation" style="color:#657b83">)</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript arrow operator" style="color:#fc929e">=&gt;</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript function" style="color:#79b6f2">nav</span><span class="token tag script language-javascript punctuation" style="color:#657b83">(</span><span class="token tag script language-javascript template-string template-punctuation string" style="color:#8dc891">`</span><span class="token tag script language-javascript template-string string" style="color:#8dc891">tel:</span><span class="token tag script language-javascript template-string interpolation interpolation-punctuation punctuation" style="color:#657b83">${</span><span class="token tag script language-javascript template-string interpolation" style="color:#fc929e">info</span><span class="token tag script language-javascript template-string interpolation punctuation" style="color:#657b83">.</span><span class="token tag script language-javascript template-string interpolation property-access" style="color:#fc929e">distributor_tel</span><span class="token tag script language-javascript template-string interpolation interpolation-punctuation punctuation" style="color:#657b83">}</span><span class="token tag script language-javascript template-string template-punctuation string" style="color:#8dc891">`</span><span class="token tag script language-javascript punctuation" style="color:#657b83">)</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">                    </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">ArecaIcon</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">text-white text-s2</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">name</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">shiwu-shouji</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag punctuation" style="color:#657b83">/&gt;</span><span class="token plain-text"> 一键报单进货</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">                  </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Tag</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">                </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">              </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Column</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">            </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Column</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Divider</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag punctuation" style="color:#657b83">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">            </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">color</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">2</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">1</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">shrink</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text">门店地址：</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">            </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">bold</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">1</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain">info</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">area</span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain">info</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">address</span><span class="token punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Card</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">TipNav</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">title</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">货品统计</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">url</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">arecaShop/storeManage/mallTotal</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">items-center</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">grow</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">            </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">ArecaIcon</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">text-secondary</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">name</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">promot_tips</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag punctuation" style="color:#657b83">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">            </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">type</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">secondary</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">2</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token punctuation" style="color:#657b83">{</span><span class="token function" style="color:#79b6f2">dayjs</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">format</span><span class="token punctuation" style="color:#657b83">(</span><span class="token string" style="color:#8dc891">'MM/DD HH:mm'</span><span class="token punctuation" style="color:#657b83">)</span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain-text"> 更新</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">TipNav</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Card</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">margin</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">disableMarginBottom</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">gap-2</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">color</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">3</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">2</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text">历史进货数量（小包）：</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain">sku</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">in</span><span class="token punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">justify</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">between</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">gap-2</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">            </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Column</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">grow</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">bg-page r-2 p-3 gap-1</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">              </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">color</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">3</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">2</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text">历史销售数量（小包）</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">              </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">bold</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">40</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain">sku</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">out</span><span class="token punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">            </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Column</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">            </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Column</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">grow</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">bg-page r-2 p-3 gap-1</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">              </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">color</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">3</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">2</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text">历史剩余数量（小包）</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">              </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">bold</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">40</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain">sku</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">supply</span><span class="token punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">            </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Column</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">22</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">type</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">secondary</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text">*销量及剩余仅供参考：记录消费者扫码数量，可能与实际结果有出入</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Card</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">TipNav</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">title</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">配送记录</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">          </span><span class="token tag attr-name" style="color:#c5a5c5">right</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript tag punctuation" style="color:#657b83">&lt;</span><span class="token tag script language-javascript tag class-name" style="color:#fac863">ModalForm</span><span class="token tag script language-javascript tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag script language-javascript tag" style="color:#fc929e">            </span><span class="token tag script language-javascript tag attr-name" style="color:#c5a5c5">title</span><span class="token tag script language-javascript tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag script language-javascript tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag script language-javascript tag attr-value" style="color:#8dc891">月份</span><span class="token tag script language-javascript tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag script language-javascript tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag script language-javascript tag" style="color:#fc929e">            </span><span class="token tag script language-javascript tag attr-name" style="color:#c5a5c5">renderForm</span><span class="token tag script language-javascript tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript tag script language-javascript tag punctuation" style="color:#657b83">&lt;</span><span class="token tag script language-javascript tag script language-javascript tag class-name" style="color:#fac863">DatePicker</span><span class="token tag script language-javascript tag script language-javascript tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag script language-javascript tag script language-javascript tag" style="color:#fc929e">              </span><span class="token tag script language-javascript tag script language-javascript tag attr-name" style="color:#c5a5c5">mode</span><span class="token tag script language-javascript tag script language-javascript tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag script language-javascript tag script language-javascript tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag script language-javascript tag script language-javascript tag attr-value" style="color:#8dc891">month</span><span class="token tag script language-javascript tag script language-javascript tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag script language-javascript tag script language-javascript tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag script language-javascript tag script language-javascript tag" style="color:#fc929e">            </span><span class="token tag script language-javascript tag script language-javascript tag punctuation" style="color:#657b83">/&gt;</span><span class="token tag script language-javascript tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag script language-javascript tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag script language-javascript tag" style="color:#fc929e">            </span><span class="token tag script language-javascript tag attr-name" style="color:#c5a5c5">childPropsValueKey</span><span class="token tag script language-javascript tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag script language-javascript tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag script language-javascript tag attr-value" style="color:#8dc891">value</span><span class="token tag script language-javascript tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag script language-javascript tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag script language-javascript tag" style="color:#fc929e">            </span><span class="token tag script language-javascript tag attr-name" style="color:#c5a5c5">value</span><span class="token tag script language-javascript tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript tag script language-javascript" style="color:#fc929e">date</span><span class="token tag script language-javascript tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag script language-javascript tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag script language-javascript tag" style="color:#fc929e">            </span><span class="token tag script language-javascript tag attr-name" style="color:#c5a5c5">onChange</span><span class="token tag script language-javascript tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript tag script language-javascript" style="color:#fc929e">setDate</span><span class="token tag script language-javascript tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag script language-javascript tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag script language-javascript tag" style="color:#fc929e">          </span><span class="token tag script language-javascript tag punctuation" style="color:#657b83">&gt;</span><span class="token tag script language-javascript plain-text" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag script language-javascript plain-text" style="color:#fc929e">            </span><span class="token tag script language-javascript tag punctuation" style="color:#657b83">&lt;</span><span class="token tag script language-javascript tag class-name" style="color:#fac863">DateChild</span><span class="token tag script language-javascript tag" style="color:#fc929e"> </span><span class="token tag script language-javascript tag punctuation" style="color:#657b83">/&gt;</span><span class="token tag script language-javascript plain-text" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag script language-javascript plain-text" style="color:#fc929e">          </span><span class="token tag script language-javascript tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag script language-javascript tag class-name" style="color:#fac863">ModalForm</span><span class="token tag script language-javascript tag punctuation" style="color:#657b83">&gt;</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">        </span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">TipNav</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Card</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">margin</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">disableMarginBottom</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">gap-2</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">color</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">3</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">2</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text">门店配送（中包）：</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain">distribution</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">middle_num</span><span class="token punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">justify</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">between</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">gap-2</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">            </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Column</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">grow</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">bg-page r-2 p-3 gap-1</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">              </span><span class="token tag attr-name" style="color:#c5a5c5">onClick</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript punctuation" style="color:#657b83">(</span><span class="token tag script language-javascript punctuation" style="color:#657b83">)</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript arrow operator" style="color:#fc929e">=&gt;</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript function" style="color:#79b6f2">nav</span><span class="token tag script language-javascript punctuation" style="color:#657b83">(</span><span class="token tag script language-javascript string" style="color:#8dc891">'arecaShop/storeManage/emptyRecovery'</span><span class="token tag script language-javascript punctuation" style="color:#657b83">,</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript literal-property property" style="color:#2aa198">type</span><span class="token tag script language-javascript operator" style="color:#fc929e">:</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript string" style="color:#8dc891">'store'</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag script language-javascript punctuation" style="color:#657b83">)</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">            </span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">              </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">color</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">3</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">2</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text">已结算空袋（小包）</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">              </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">items</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">center</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">gap-1</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">                </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">bold</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">40</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain">distribution</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">recycle_num</span><span class="token punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">                </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">CmsIcon</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">text-c3 text-s5</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">name</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">direction_right</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag punctuation" style="color:#657b83">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">              </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">            </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Column</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">            </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Column</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">grow</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">bg-page r-2 p-3 gap-1</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">              </span><span class="token tag attr-name" style="color:#c5a5c5">onClick</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript punctuation" style="color:#657b83">(</span><span class="token tag script language-javascript punctuation" style="color:#657b83">)</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript arrow operator" style="color:#fc929e">=&gt;</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript function" style="color:#79b6f2">nav</span><span class="token tag script language-javascript punctuation" style="color:#657b83">(</span><span class="token tag script language-javascript string" style="color:#8dc891">'arecaShop/storeManage/deliveryList'</span><span class="token tag script language-javascript punctuation" style="color:#657b83">)</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">            </span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">              </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">color</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">3</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">2</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text">门店已退货数（小包）</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">              </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">items</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">center</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">gap-1</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">                </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">bold</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">40</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain">distribution</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">refund_num</span><span class="token punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">                </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">CmsIcon</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">text-c3 text-s5</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">name</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">direction_right</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag punctuation" style="color:#657b83">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">              </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">            </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Column</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Card</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">ScrollView</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">TopView</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> </span><span class="token function-variable function maybe-class-name" style="color:#79b6f2">DateChild</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">(</span><span class="token parameter punctuation" style="color:#657b83">{</span><span class="token parameter"> value</span><span class="token parameter punctuation" style="color:#657b83">,</span><span class="token parameter"> onClick </span><span class="token parameter punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#fc929e">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#c5a5c5">return</span><span class="token plain"> </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">items</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">center</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">r-2 ph-2 bg-white gap-1</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">onClick</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e">onClick</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">color</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e">value </span><span class="token tag script language-javascript operator" style="color:#fc929e">?</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript number" style="color:#5a9bcf">1</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript operator" style="color:#fc929e">:</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript number" style="color:#5a9bcf">3</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain">value </span><span class="token operator" style="color:#fc929e">||</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'请选择'</span><span class="token punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">ArecaIcon</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">name</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">rili1</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">text-c3</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag punctuation" style="color:#657b83">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">  </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="使用ui库">使用UI库<a class="hash-link" aria-label="使用UI库的直接链接" title="使用UI库的直接链接" href="https://duxapp.com/blog/quick-prject#%E4%BD%BF%E7%94%A8ui%E5%BA%93">​</a></h2>
<p>在上面的示例中已经展示了如何使用UI库的组件，可以看到使用了UI库的组件，在结合全局样式，你会发现，似乎不需要编写scss就能很好的完成页面布局了</p>
<p>这些组件都是<a href="https://duxapp.com/docs/duxui/start">duxui UI库</a>提供的</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="使用list组件完成列表页面">使用List组件完成列表页面<a class="hash-link" aria-label="使用List组件完成列表页面的直接链接" title="使用List组件完成列表页面的直接链接" href="https://duxapp.com/blog/quick-prject#%E4%BD%BF%E7%94%A8list%E7%BB%84%E4%BB%B6%E5%AE%8C%E6%88%90%E5%88%97%E8%A1%A8%E9%A1%B5%E9%9D%A2">​</a></h2>
<p>以下面这个列表页面为例，List组件帮你完成了数据请求、自动分页、下拉刷新、自动刷新等功能，你只需要关注你列表中的每一项是如何编写的</p>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token keyword module" style="color:#c5a5c5">import</span><span class="token plain"> </span><span class="token imports punctuation" style="color:#657b83">{</span><span class="token imports"> </span><span class="token imports maybe-class-name">TopView</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">Header</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">Card</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">Tab</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">TabItem</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">Row</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">Image</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">Column</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">Text</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> px</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">Empty</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">DatePicker</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">SelectorPicker</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">ModalForm</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">Button</span><span class="token imports"> </span><span class="token imports punctuation" style="color:#657b83">}</span><span class="token plain"> </span><span class="token keyword module" style="color:#c5a5c5">from</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'@/duxui'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token keyword module" style="color:#c5a5c5">import</span><span class="token plain"> </span><span class="token imports punctuation" style="color:#657b83">{</span><span class="token imports"> </span><span class="token imports maybe-class-name">ArecaIcon</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">List</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> usePageData</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> nav </span><span class="token imports punctuation" style="color:#657b83">}</span><span class="token plain"> </span><span class="token keyword module" style="color:#c5a5c5">from</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'@/arecaShop'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token keyword module" style="color:#c5a5c5">import</span><span class="token plain"> </span><span class="token imports punctuation" style="color:#657b83">{</span><span class="token imports"> useState </span><span class="token imports punctuation" style="color:#657b83">}</span><span class="token plain"> </span><span class="token keyword module" style="color:#c5a5c5">from</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'react'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token keyword module" style="color:#c5a5c5">export</span><span class="token plain"> </span><span class="token keyword module" style="color:#c5a5c5">default</span><span class="token plain"> </span><span class="token keyword" style="color:#c5a5c5">function</span><span class="token plain"> </span><span class="token function maybe-class-name" style="color:#79b6f2">DeliveryList</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">[</span><span class="token plain">users</span><span class="token punctuation" style="color:#657b83">]</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token function" style="color:#79b6f2">usePageData</span><span class="token punctuation" style="color:#657b83">(</span><span class="token string" style="color:#8dc891">'store/salesman'</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">[</span><span class="token plain">user</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> setUser</span><span class="token punctuation" style="color:#657b83">]</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token function" style="color:#79b6f2">useState</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">[</span><span class="token plain">type</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> setType</span><span class="token punctuation" style="color:#657b83">]</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token function" style="color:#79b6f2">useState</span><span class="token punctuation" style="color:#657b83">(</span><span class="token number" style="color:#5a9bcf">0</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#c5a5c5">return</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">TopView</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Header</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">title</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">配送记录</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag punctuation" style="color:#657b83">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Tab</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">bg-white</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">value</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e">type</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">onChange</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e">setType</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">TabItem</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">title</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">门店配送</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">paneKey</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">0</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag punctuation" style="color:#657b83">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">TabItem</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">title</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">门店退货</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">paneKey</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">1</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag punctuation" style="color:#657b83">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Tab</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">ph-3 mt-3</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">items</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">center</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">justify</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">between</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">ModalForm</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">          </span><span class="token tag attr-name" style="color:#c5a5c5">title</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">业务员</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">          </span><span class="token tag attr-name" style="color:#c5a5c5">renderForm</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript tag punctuation" style="color:#657b83">&lt;</span><span class="token tag script language-javascript tag class-name" style="color:#fac863">SelectorPicker</span><span class="token tag script language-javascript tag" style="color:#fc929e"> </span><span class="token tag script language-javascript tag attr-name" style="color:#c5a5c5">range</span><span class="token tag script language-javascript tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript tag script language-javascript" style="color:#fc929e">users</span><span class="token tag script language-javascript tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag script language-javascript tag" style="color:#fc929e"> </span><span class="token tag script language-javascript tag attr-name" style="color:#c5a5c5">nameKey</span><span class="token tag script language-javascript tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag script language-javascript tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag script language-javascript tag attr-value" style="color:#8dc891">nickname</span><span class="token tag script language-javascript tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag script language-javascript tag" style="color:#fc929e"> </span><span class="token tag script language-javascript tag attr-name" style="color:#c5a5c5">valueKey</span><span class="token tag script language-javascript tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag script language-javascript tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag script language-javascript tag attr-value" style="color:#8dc891">id</span><span class="token tag script language-javascript tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag script language-javascript tag" style="color:#fc929e"> </span><span class="token tag script language-javascript tag punctuation" style="color:#657b83">/&gt;</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">          </span><span class="token tag attr-name" style="color:#c5a5c5">childPropsValueKey</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">value</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">          </span><span class="token tag attr-name" style="color:#c5a5c5">value</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e">user</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">          </span><span class="token tag attr-name" style="color:#c5a5c5">onChange</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e">setUser</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">        </span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">SelectChild</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag punctuation" style="color:#657b83">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">ModalForm</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">List</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">        </span><span class="token tag attr-name" style="color:#c5a5c5">key</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e">type</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">        </span><span class="token tag attr-name" style="color:#c5a5c5">renderItem</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript maybe-class-name" style="color:#fc929e">Item</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">        </span><span class="token tag attr-name" style="color:#c5a5c5">renderEmpty</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript tag punctuation" style="color:#657b83">&lt;</span><span class="token tag script language-javascript tag class-name" style="color:#fac863">Empty</span><span class="token tag script language-javascript tag" style="color:#fc929e"> </span><span class="token tag script language-javascript tag attr-name" style="color:#c5a5c5">title</span><span class="token tag script language-javascript tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag script language-javascript tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag script language-javascript tag attr-value" style="color:#8dc891">暂无记录</span><span class="token tag script language-javascript tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag script language-javascript tag" style="color:#fc929e"> </span><span class="token tag script language-javascript tag punctuation" style="color:#657b83">/&gt;</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">        </span><span class="token tag attr-name" style="color:#c5a5c5">url</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e">type </span><span class="token tag script language-javascript operator" style="color:#fc929e">?</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript string" style="color:#8dc891">'store/refund'</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript operator" style="color:#fc929e">:</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript string" style="color:#8dc891">'store/distribution'</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">        </span><span class="token tag attr-name" style="color:#c5a5c5">data</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag script language-javascript" style="color:#fc929e">          </span><span class="token tag script language-javascript literal-property property" style="color:#2aa198">salesman_id</span><span class="token tag script language-javascript operator" style="color:#fc929e">:</span><span class="token tag script language-javascript" style="color:#fc929e"> user</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag script language-javascript" style="color:#fc929e">        </span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token tag" style="color:#fc929e">      </span><span class="token tag punctuation" style="color:#657b83">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">TopView</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> </span><span class="token function-variable function maybe-class-name" style="color:#79b6f2">SelectChild</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">(</span><span class="token parameter punctuation" style="color:#657b83">{</span><span class="token parameter"> value</span><span class="token parameter punctuation" style="color:#657b83">,</span><span class="token parameter"> </span><span class="token parameter spread operator" style="color:#fc929e">...</span><span class="token parameter">props </span><span class="token parameter punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#fc929e">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#c5a5c5">return</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">items</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">center</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e">  </span><span class="token tag spread punctuation" style="color:#657b83">{</span><span class="token tag spread operator" style="color:#fc929e">...</span><span class="token tag spread" style="color:#fc929e">props</span><span class="token tag spread punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">2</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain">value </span><span class="token operator" style="color:#fc929e">||</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'全部业务员'</span><span class="token punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">ArecaIcon</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">name</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">arrow_down_fill</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">text-s4 text-c2</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag punctuation" style="color:#657b83">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> </span><span class="token function-variable function maybe-class-name" style="color:#79b6f2">Item</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">(</span><span class="token parameter punctuation" style="color:#657b83">{</span><span class="token parameter"> item </span><span class="token parameter punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#fc929e">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#c5a5c5">return</span><span class="token plain"> </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Card</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">margin</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">disableMarginBottom</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">gap-3</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">items</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">center</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">ArecaIcon</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">text-c1 text-s7</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">name</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">store</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag punctuation" style="color:#657b83">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">2</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">style</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript literal-property property" style="color:#2aa198">marginLeft</span><span class="token tag script language-javascript operator" style="color:#fc929e">:</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript function" style="color:#79b6f2">px</span><span class="token tag script language-javascript punctuation" style="color:#657b83">(</span><span class="token tag script language-javascript number" style="color:#5a9bcf">4</span><span class="token tag script language-javascript punctuation" style="color:#657b83">)</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain">item</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">store_name</span><span class="token punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">ArecaIcon</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">text-c3 text-s5</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">name</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">you2</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag punctuation" style="color:#657b83">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">    </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      item</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">goods</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">map</span><span class="token punctuation" style="color:#657b83">(</span><span class="token parameter">good</span><span class="token plain"> </span><span class="token arrow operator" style="color:#fc929e">=&gt;</span><span class="token plain"> </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">gap-3</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">key</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e">good</span><span class="token tag script language-javascript punctuation" style="color:#657b83">.</span><span class="token tag script language-javascript property-access" style="color:#fc929e">id</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Image</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">style</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript literal-property property" style="color:#2aa198">width</span><span class="token tag script language-javascript operator" style="color:#fc929e">:</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript function" style="color:#79b6f2">px</span><span class="token tag script language-javascript punctuation" style="color:#657b83">(</span><span class="token tag script language-javascript number" style="color:#5a9bcf">160</span><span class="token tag script language-javascript punctuation" style="color:#657b83">)</span><span class="token tag script language-javascript" style="color:#fc929e"> </span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">square</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">r-2</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">src</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e">good</span><span class="token tag script language-javascript punctuation" style="color:#657b83">.</span><span class="token tag script language-javascript property-access" style="color:#fc929e">image</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag punctuation" style="color:#657b83">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Column</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">grow</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">justify</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">between</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">2</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">bold</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">numberOfLines</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">2</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain">good</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">title</span><span class="token punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">2</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">color</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">3</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text">规格：</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain">good</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">spec</span><span class="token punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">2</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">color</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">3</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text">数量：</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain">good</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">num</span><span class="token punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Column</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Column</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">r-2 bg-page p-3 gap-2</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">grow</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">items</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">center</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">ArecaIcon</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">text-secondary text-s7</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">name</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">man_mine</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag punctuation" style="color:#657b83">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">2</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain">item</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">salesman_name</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">||</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'-'</span><span class="token punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">grow</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">items</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">center</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">ArecaIcon</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">text-secondary text-s7</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">name</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">shiwu-shouji</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag punctuation" style="color:#657b83">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">2</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain">item</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">salesman_tel</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">||</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'-'</span><span class="token punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">grow</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">items</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">center</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">ArecaIcon</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">text-secondary text-s7</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">name</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">map</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag punctuation" style="color:#657b83">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">2</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain">item</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">area</span><span class="token punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">grow</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">items</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">center</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">ArecaIcon</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">text-secondary text-s7</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">name</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">shijian1</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag punctuation" style="color:#657b83">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">2</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain">item</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">created_at</span><span class="token punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Column</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">  </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Card</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="使用hook快速请求数据">使用hook快速请求数据<a class="hash-link" aria-label="使用hook快速请求数据的直接链接" title="使用hook快速请求数据的直接链接" href="https://duxapp.com/blog/quick-prject#%E4%BD%BF%E7%94%A8hook%E5%BF%AB%E9%80%9F%E8%AF%B7%E6%B1%82%E6%95%B0%E6%8D%AE">​</a></h2>
<p>这里是指的使用<code>useRequest</code>替代<code>request</code>快速获取数据，而不需要在编写具体请求逻辑</p>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token keyword module" style="color:#c5a5c5">import</span><span class="token plain"> </span><span class="token imports punctuation" style="color:#657b83">{</span><span class="token imports"> </span><span class="token imports maybe-class-name">TopView</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">Header</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">Card</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">Text</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">ScrollView</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">Space</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">HtmlView</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> useRoute </span><span class="token imports punctuation" style="color:#657b83">}</span><span class="token plain"> </span><span class="token keyword module" style="color:#c5a5c5">from</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'@/duxui'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token keyword module" style="color:#c5a5c5">import</span><span class="token plain"> </span><span class="token imports punctuation" style="color:#657b83">{</span><span class="token imports"> useRequest </span><span class="token imports punctuation" style="color:#657b83">}</span><span class="token plain"> </span><span class="token keyword module" style="color:#c5a5c5">from</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'@/arecaShop'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token keyword module" style="color:#c5a5c5">export</span><span class="token plain"> </span><span class="token keyword module" style="color:#c5a5c5">default</span><span class="token plain"> </span><span class="token keyword" style="color:#c5a5c5">function</span><span class="token plain"> </span><span class="token function maybe-class-name" style="color:#79b6f2">HelpDetail</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"> params </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token function" style="color:#79b6f2">useRoute</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">[</span><span class="token plain">detail</span><span class="token punctuation" style="color:#657b83">]</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token function" style="color:#79b6f2">useRequest</span><span class="token punctuation" style="color:#657b83">(</span><span class="token template-string template-punctuation string" style="color:#8dc891">`</span><span class="token template-string string" style="color:#8dc891">tools/magic/help/</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#657b83">${</span><span class="token template-string interpolation">params</span><span class="token template-string interpolation punctuation" style="color:#657b83">.</span><span class="token template-string interpolation property-access">id</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#657b83">}</span><span class="token template-string template-punctuation string" style="color:#8dc891">`</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#c5a5c5">return</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">TopView</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">isSafe</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Header</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">title</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">帮助详情</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag punctuation" style="color:#657b83">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">ScrollView</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Card</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">shadow</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript boolean" style="color:#ff8b50">false</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">margin</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Space</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">32</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">            </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">bold</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">42</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain">detail</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">title</span><span class="token punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">            </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">HtmlView</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">html</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e">detail</span><span class="token tag script language-javascript punctuation" style="color:#657b83">.</span><span class="token tag script language-javascript property-access" style="color:#fc929e">content</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag punctuation" style="color:#657b83">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">          </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Space</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Card</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">ScrollView</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">TopView</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="使用现有模块">使用现有模块<a class="hash-link" aria-label="使用现有模块的直接链接" title="使用现有模块的直接链接" href="https://duxapp.com/blog/quick-prject#%E4%BD%BF%E7%94%A8%E7%8E%B0%E6%9C%89%E6%A8%A1%E5%9D%97">​</a></h2>
<p>这个项目中的 购物订单流程、售后退换、文章发布等功能，在之前的模块中都已经是开发过的功能，并且他们都是成熟可用的，我们只需要直接使用他们就行了</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token property" style="color:#2aa198">"name"</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">"arecaShop"</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token property" style="color:#2aa198">"description"</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">"大工匠槟榔商城"</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token property" style="color:#2aa198">"version"</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">"1.0.0"</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token property" style="color:#2aa198">"dependencies"</span><span class="token operator" style="color:#fc929e">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token string" style="color:#8dc891">"duxcmsMall"</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token string" style="color:#8dc891">"amap"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>在我这个项目模块的配置文件中，将 <code>duxcmsMall</code> 添加到依赖中，这是商城模块他提供了商品、订单、售后、购物车、收货地址等功能</p>
<p>因为当前项目需求是积分兑换商品，但是默认的商城不支持积分功能，下面介绍是使用渲染钩子来修改为积分商品</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="使用渲染钩子对商城进行修改">使用渲染钩子对商城进行修改<a class="hash-link" aria-label="使用渲染钩子对商�城进行修改的直接链接" title="使用渲染钩子对商城进行修改的直接链接" href="https://duxapp.com/blog/quick-prject#%E4%BD%BF%E7%94%A8%E6%B8%B2%E6%9F%93%E9%92%A9%E5%AD%90%E5%AF%B9%E5%95%86%E5%9F%8E%E8%BF%9B%E8%A1%8C%E4%BF%AE%E6%94%B9">​</a></h2>
<p>使用RenderHook，将商城购物流程修改为积分兑换流程，这个文件需要在模块入口文件中导入</p>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#FFFFFF;--prism-background-color:#282C34"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#FFFFFF;background-color:#282C34"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#FFFFFF"><span class="token keyword module" style="color:#c5a5c5">import</span><span class="token plain"> </span><span class="token imports punctuation" style="color:#657b83">{</span><span class="token imports"> mallHook</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> orderHook</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">Price</span><span class="token imports"> </span><span class="token imports punctuation" style="color:#657b83">}</span><span class="token plain"> </span><span class="token keyword module" style="color:#c5a5c5">from</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'@/duxcmsMall'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token keyword module" style="color:#c5a5c5">import</span><span class="token plain"> </span><span class="token imports punctuation" style="color:#657b83">{</span><span class="token imports"> </span><span class="token imports maybe-class-name">Card</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> contextState</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">Row</span><span class="token imports punctuation" style="color:#657b83">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">Text</span><span class="token imports"> </span><span class="token imports punctuation" style="color:#657b83">}</span><span class="token plain"> </span><span class="token keyword module" style="color:#c5a5c5">from</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'@/duxui'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> </span><span class="token function-variable function maybe-class-name" style="color:#79b6f2">ListPrice</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">(</span><span class="token parameter punctuation" style="color:#657b83">{</span><span class="token parameter"> item</span><span class="token parameter punctuation" style="color:#657b83">,</span><span class="token parameter"> children </span><span class="token parameter punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#fc929e">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#c5a5c5">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">(</span><span class="token plain">item</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">type</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">===</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'point'</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token keyword control-flow" style="color:#c5a5c5">return</span><span class="token plain"> </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">bold</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">4</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">type</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">danger</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain">item</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">sell_point</span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain-text">积分</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#c5a5c5">return</span><span class="token plain"> children</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">mallHook</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">add</span><span class="token punctuation" style="color:#657b83">(</span><span class="token string" style="color:#8dc891">'goods.list.item.sellPrice'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> </span><span class="token maybe-class-name">ListPrice</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">mallHook</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">add</span><span class="token punctuation" style="color:#657b83">(</span><span class="token string" style="color:#8dc891">'MallCateQuick.item.sellPrice'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> </span><span class="token maybe-class-name">ListPrice</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">mallHook</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">add</span><span class="token punctuation" style="color:#657b83">(</span><span class="token string" style="color:#8dc891">'MallList.item.sellPrice'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> </span><span class="token maybe-class-name">ListPrice</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">mallHook</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">add</span><span class="token punctuation" style="color:#657b83">(</span><span class="token string" style="color:#8dc891">'detail.info.price'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">(</span><span class="token parameter punctuation" style="color:#657b83">{</span><span class="token parameter"> children </span><span class="token parameter punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#fc929e">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">[</span><span class="token plain">data</span><span class="token punctuation" style="color:#657b83">]</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> contextState</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">useState</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#c5a5c5">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">(</span><span class="token plain">data</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">type</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">!==</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'point'</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token keyword control-flow" style="color:#c5a5c5">return</span><span class="token plain"> children</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#c5a5c5">return</span><span class="token plain"> </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">gap-2</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">items</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">center</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">40</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">bold</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">color</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">4</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain">data</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">sell_point</span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain-text">积分</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Price</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">1</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">delete</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">color</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">4</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">mt-2</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain">data</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">market_price</span><span class="token punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Price</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">  </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">mallHook</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">add</span><span class="token punctuation" style="color:#657b83">(</span><span class="token string" style="color:#8dc891">'GoodsSpec.price'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">(</span><span class="token parameter punctuation" style="color:#657b83">{</span><span class="token parameter"> children</span><span class="token parameter punctuation" style="color:#657b83">,</span><span class="token parameter"> data</span><span class="token parameter punctuation" style="color:#657b83">,</span><span class="token parameter"> item </span><span class="token parameter punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#fc929e">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#c5a5c5">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">(</span><span class="token plain">data</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">type</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">!==</span><span class="token plain"> </span><span class="token string" style="color:#8dc891">'point'</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token keyword control-flow" style="color:#c5a5c5">return</span><span class="token plain"> children</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#c5a5c5">return</span><span class="token plain"> </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">size</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">48</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">bold</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">type</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">danger</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">    </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain">item</span><span class="token operator" style="color:#fc929e">?.</span><span class="token plain">sell_point </span><span class="token operator" style="color:#fc929e">||</span><span class="token plain"> data</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">sell_point</span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain-text">积分</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">  </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">orderHook</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">add</span><span class="token punctuation" style="color:#657b83">(</span><span class="token string" style="color:#8dc891">'order.create.data.total'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">(</span><span class="token parameter punctuation" style="color:#657b83">{</span><span class="token parameter"> store </span><span class="token parameter punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#fc929e">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token comment" style="color:#93a1a1">// const isPoint = store.items.some(v =&gt; v.type === 'point')</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#c5a5c5">return</span><span class="token plain"> </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">items</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">center</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">justify</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">between</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">bold</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text">商品金额</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Price</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">color</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">2</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain">store</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">total</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">order_price</span><span class="token punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Price</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">items</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">center</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">justify</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">between</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">bold</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text">运费</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Price</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">color</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">2</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain">store</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">total</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">delivery_price</span><span class="token punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Price</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">    </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      store</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">discount</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">map</span><span class="token punctuation" style="color:#657b83">(</span><span class="token parameter">item</span><span class="token plain"> </span><span class="token arrow operator" style="color:#fc929e">=&gt;</span><span class="token plain"> </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">key</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e">item</span><span class="token tag script language-javascript punctuation" style="color:#657b83">.</span><span class="token tag script language-javascript property-access" style="color:#fc929e">name</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">items</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">center</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">justify</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">between</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">bold</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain">item</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">desc</span><span class="token punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">type</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">danger</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text">-¥</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain">item</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">price</span><span class="token punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">    </span><span class="token punctuation" style="color:#657b83">{</span><span class="token comment" style="color:#93a1a1">/* {+store.total.discount_price &gt; 0 &amp;&amp; &lt;Row items='center' justify='between'&gt;</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token comment" style="color:#93a1a1">      &lt;Text bold&gt;{isPoint ? '积分抵扣' : '优惠'}&lt;/Text&gt;</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token comment" style="color:#93a1a1">      &lt;Price type='danger'&gt;{-store.total.discount_price}&lt;/Price&gt;</span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token comment" style="color:#93a1a1">    &lt;/Row&gt;} */</span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">  </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">orderHook</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">add</span><span class="token punctuation" style="color:#657b83">(</span><span class="token string" style="color:#8dc891">'order.detail.total'</span><span class="token punctuation" style="color:#657b83">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#fc929e">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword" style="color:#c5a5c5">const</span><span class="token plain"> </span><span class="token punctuation" style="color:#657b83">[</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"> data </span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">]</span><span class="token plain"> </span><span class="token operator" style="color:#fc929e">=</span><span class="token plain"> contextState</span><span class="token punctuation" style="color:#657b83">.</span><span class="token method function property-access" style="color:#79b6f2">useState</span><span class="token punctuation" style="color:#657b83">(</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#c5a5c5">return</span><span class="token plain"> </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Card</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">margin</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">disableMarginBottom</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">gap-3</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">items</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">center</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">justify</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">between</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">color</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">2</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text">订单总额</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Price</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">bold</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">color</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">1</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain">data</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">order_price</span><span class="token punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Price</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">items</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">center</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">justify</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">between</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">color</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">2</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text">运费</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Price</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">bold</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">color</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">1</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain">data</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">delivery_price</span><span class="token punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Price</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">    </span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">      data</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">discount_data</span><span class="token operator" style="color:#fc929e">?.</span><span class="token method function property-access" style="color:#79b6f2">map</span><span class="token punctuation" style="color:#657b83">(</span><span class="token parameter">item</span><span class="token plain"> </span><span class="token arrow operator" style="color:#fc929e">=&gt;</span><span class="token plain"> </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">key</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript" style="color:#fc929e">item</span><span class="token tag script language-javascript punctuation" style="color:#657b83">.</span><span class="token tag script language-javascript property-access" style="color:#fc929e">name</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">items</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">center</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">justify</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">between</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">color</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">2</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain">item</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">desc</span><span class="token punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">bold</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">type</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">danger</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text">-¥</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain">item</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">price</span><span class="token punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token punctuation" style="color:#657b83">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain">    </span><span class="token punctuation" style="color:#657b83">}</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">items</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">center</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">justify</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">between</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">color</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#657b83">=</span><span class="token tag script language-javascript punctuation" style="color:#657b83">{</span><span class="token tag script language-javascript number" style="color:#5a9bcf">2</span><span class="token tag script language-javascript punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text">实付款</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Text</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#657b83">&lt;</span><span class="token tag class-name" style="color:#fac863">Price</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">bold</span><span class="token tag" style="color:#fc929e"> </span><span class="token tag attr-name" style="color:#c5a5c5">type</span><span class="token tag attr-value punctuation attr-equals" style="color:#657b83">=</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag attr-value" style="color:#8dc891">primary</span><span class="token tag attr-value punctuation" style="color:#657b83">'</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token punctuation" style="color:#657b83">{</span><span class="token plain">data</span><span class="token punctuation" style="color:#657b83">.</span><span class="token property-access">pay_price</span><span class="token punctuation" style="color:#657b83">}</span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Price</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Row</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain-text">  </span><span class="token tag punctuation" style="color:#657b83">&lt;/</span><span class="token tag class-name" style="color:#fac863">Card</span><span class="token tag punctuation" style="color:#657b83">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#FFFFFF"><span class="token plain"></span><span class="token punctuation" style="color:#657b83">}</span><span class="token punctuation" style="color:#657b83">)</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="总结">总结<a class="hash-link" aria-label="总结的直接链接" title="总结的直接链接" href="https://duxapp.com/blog/quick-prject#%E6%80%BB%E7%BB%93">​</a></h2>
<p>上面提到的就是用于快速开发的主要方法，当你熟练掌握这些方法后，你的开发速度将一骑绝尘</p>
<p>当然这些上面提到这些并不是全部，你可以阅读开发文档，从中获取更多的使用方法</p>]]></content:encoded>
            <category>duxapp</category>
            <category>项目</category>
            <category>UI库</category>
        </item>
    </channel>
</rss>