React Fixing input is a void element tag and must neither have `children` nor use `dangerouslySetInnerHTML`
This post covers solutions for **input is a void element tag and must neither have children nor use dangerouslySetInnerHTML**
.
React throws an error while void elements contain children or are used dangerouslySetInnerHTML.
Void elements in HTMl are self closing tags which don’t haave any content, Examples are <input />
,<button>
,<br/>
This is a frequent issue developers used to get during React application development.
What does the issue mean?
For example, Let’s declare a button in HTML, This works in HTML but a semantic issue as
<input type="submit">Save</input>
The same line causes these errors/warnings in React render JSX code, Input is a self-closing tag and no children inside the closing tag. So save label is not allowed inside it.
In the same way, We can rewrite in react as follows
<input type="submit" value="Save" />
Not only for input tags, but Buttons also can be an issue in react
<button type="submit">Update</button>
The above can be rewritten using the value
attribute.
<button type="submit" value="Update" />
For example in Input text types
As you see below, the Input tag contains a div which is not allowed, So, react throws a warning.
<input type=text onChange={changeEvent} >
<div className="tooltip">
This is email text box
</div>
</input>;
Instead, the Same can be rewritten as below
<input type="text" onChange="{changeEvent}" />;
Conclusion
Ad input fields in Reacts are self-closing elements, These can not contain children’s or nested content.
And also explained
- Buttons labels are moved from inside tag to attribute value
- Labels inside the input tag are not allowed.