Skip to content
This repository has been archived by the owner on Jul 19, 2019. It is now read-only.

Don't return a div but just an array (React 16) #298

Open
marcelhageman opened this issue Dec 4, 2017 · 1 comment
Open

Don't return a div but just an array (React 16) #298

marcelhageman opened this issue Dec 4, 2017 · 1 comment

Comments

@marcelhageman
Copy link

Right now I can't do this in CSS:

input:focus + label { color: red; }

Because the output for the react-autocomplete contains the input element inside a div.

Instead, I'd like to be able to output only an input element and render it right beside a label, so I can focus the input field and style the next sibling label element accordingly.

Since React 16 I believe you can also render as follows:

const renderAutocomplete = [
  {this.props.renderInput(...)},
  {open && this.renderMenu()},
  {this.props.debug && ...}
];

You'd need to provide a key attribute to each child.

The containing div could be skipped since it offers no functional meaning, you could make it the default for old-times sake.

const { renderWrapper } = this.props;

return (
  renderWrapper
    ? <div style={{ ...this.props.wrapperStyle }} {...this.props.wrapperProps}>
        {renderAutocomplete}
      </div>
    : renderAutocomplete
);

Thoughts?

@CMTegner
Copy link
Collaborator

CMTegner commented Feb 4, 2018

Sure! At some point we'll drop support for React <16 and this will be how the component functions, but until then this is a good compromise. Create a PR and I'll review it as soon as I have time.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants