Ad
React Add Data Attribute To Each Render() With Component Name
To make e2e testing easier I would like to add to each react
component data-component=
attribute with component name. I would like to have it done "automatically" (without adjusting render()
functions everywhere).
Anyone knows how to do it reliably for both class and function based components?
Ad
Answer
- Component name is set via static property
displayName
for each component. You need to set it manually. Create hoc (higher order component), to wrap component with
div
(or any other html tag) which will have required attribute.const withComponentName(WrappedComponent) => { const displayName = WrappedComponent.displayName || WrappedComponent.name || 'UnnamedComponent'; return props => ( <div data-component={displayName}><WrappedComponent {...props} /><div> ) }
Wrap all component export statements with created hoc.
export default withComponentName(YourShinyComponent)
Ad
source: stackoverflow.com
Related Questions
- → How to update data attribute on Ajax complete
- → October CMS - Radio Button Ajax Click Twice in a Row Causes Content to disappear
- → Octobercms Component Unique id (Twig & Javascript)
- → Passing a JS var from AJAX response to Twig
- → Laravel {!! Form::open() !!} doesn't work within AngularJS
- → DropzoneJS & Laravel - Output form validation errors
- → Import statement and Babel
- → Uncaught TypeError: Cannot read property '__SECRET_DOM_DO_NOT_USE_OR_YOU_WILL_BE_FIRED' of undefined
- → React-router: Passing props to children
- → ListView.DataSource looping data for React Native
- → Can't test submit handler in React component
- → React + Flux - How to avoid global variable
- → Webpack, React & Babel, not rendering DOM
Ad