如何为反应组件提供 Id 或 Attribute

Posted

技术标签:

【中文标题】如何为反应组件提供 Id 或 Attribute【英文标题】:How to provide Id or Attribute to the react components 【发布时间】:2019-02-28 06:17:34 【问题描述】:

我们需要为我们的 react 组件提供一些标识符,以便我们可以在这些控件上编写自动化测试用例。

import React from 'react';
import ReactDOM from 'react-dom';
import  Grid, GridColumn as Column  from '@progress/kendo-react-grid';

import products from './products.json';

class App extends React.Component 
    state = 
        gridData: products
    

    render() 
        return (
            <div>
                <Grid
                    data-grid="myGrid"
                    style= height: '400px' 
                    data=this.state.gridData
                >
                    <Column field="ProductID" title="ID"  />
                    <Column field="ProductName" title="Name"  />
                    <Column field="Category.CategoryName" title="CategoryName" />
                    <Column field="UnitPrice" title="Price"  />
                    <Column field="UnitsInStock" title="In stock"  />
                    <Column field="Discontinued" 
                        cell=(props) => (
                            <td>
                                <input disabled type="checkbox" checked=props.dataItem[props.field] />
                            </td>
                        ) />
                </Grid>
            </div>
        );
    


ReactDOM.render(
    <App />,
    document.querySelector('my-app')
);

我们尝试为网格提供 data-grid="myGrid" 属性,但这似乎不起作用。您能否提出这里的错误或解决方案。

【问题讨论】:

有什么建议吗? 【参考方案1】:

您应该使用camelCase 传递道具,所以它应该是这样的:

<Grid dataGrid="myGrid" />

Grid 中,您可以这样指定:

const Grid = (dataGrid) => (
   <div data-grid=dataGrid />
)

或者您可以将id 设置为组件&lt;Grid id="myGrid" /&gt;

【讨论】:

好的,我已经尝试了提供的选项,但似乎它不起作用.. 在检查组件时,我看不到提供的 ID/属性

以上是关于如何为反应组件提供 Id 或 Attribute的主要内容,如果未能解决你的问题,请参考以下文章

如何为调用 reduxjs 的 mapStateToProps 的反应组件编写单元测试?

如何为 JSON 文件中的每个项目呈现一个反应组件?

如何为模板重用 Kendo UI 组件?属性“.name”为多个 HTML 元素在 DOM 中提供完全相同的 ID

如何为具有分离数据源的 2 个反应组件更新 relayjs 缓存

如何为paypal上下文快速结账创建反应组件?

如何为特定页面创建父组件(以便能够在父级中添加反应上下文)?