本身开发与第三方module都出现一个问题,Grid的column排序点击三次后会出现重复record,头两次会加载,第三次直接出现结果,因此能够判断是加载cache数据时出现问题。html
vendor/magento/module-ui/view/base/web/js/grid/data-storage.js
grid数据提取后会加到cache中,但只会保存一个id数据,而且默认id名是entity_id,因此使用的id不是entity_id则须要在ui component xml中额外指定,但大多数开发者会忽略这一点。web
参考如下数据源设置,cms的数据ID不是entity_id而是page_id,通常primaryFieldName节点不会设置错,但storageConfig节点不设置不会出现明显问题。ide
<!-- vendor/magento/module-cms/view/adminhtml/ui_component/cms_page_listing.xml --> <dataSource name="cms_page_listing_data_source"> <argument name="dataProvider" xsi:type="configurableObject"> <argument name="class" xsi:type="string">Magento\Cms\Ui\Component\DataProvider</argument> <argument name="name" xsi:type="string">cms_page_listing_data_source</argument> <argument name="primaryFieldName" xsi:type="string">page_id</argument> <argument name="requestFieldName" xsi:type="string">id</argument> <argument name="data" xsi:type="array"> <item name="config" xsi:type="array"> <item name="component" xsi:type="string">Magento_Ui/js/grid/provider</item> <item name="update_url" xsi:type="url" path="mui/index/render"/> <!-- 若是漏掉这段,会出现上述问题 --> <item name="storageConfig" xsi:type="array"> <item name="indexField" xsi:type="string">page_id</item> </item> </item> </argument> </argument> </dataSource>