I have a web app with ReactJs and NextJs. In a functional component, I have used react-select then, I'm receiving the following console warning:
Warning: Prop
iddid not match. Server: "react-select-7-input" Client: "react-select-2-input"
My codes are following:
import { Row, Col, Card, Form, Button } from 'react-bootstrap';
import Select from 'react-select';
const priorityOptions = [
{ value: 'p1', label: 'Top level - P1' },
{ value: 'p2', label: 'Mid level - P2' },
{ value: 'p3', label: 'Low level - P3' }
];
const PostView = () => {
return (
<div className="DashboardSla-ContentBody__Form">
<Row>
<Col md="10">
<Card className="shadow-sm">
<Card.Body>
<Form>
<h5 className="text-secondary mb-3">Booking details</h5>
<Form.Group controlId="postType">
<Form.Label>Booking priority</Form.Label>
<Select
id="postType"
placeholder="Make a selection"
options={priorityOptions}
/>
</Form.Group>
<Button
type="submit"
variant="primary"
>Add Booking</Button>
</Form>
</Card.Body>
</Card>
</Col>
</Row>
</div>
)
}
export default PostView;
try to add prop instanceId set as unique string and should work
Select component needs an instanceId, id mandatory So Just add
id="long-value-select" instanceId="long-value-select"
to your Select component it will remove the Warning :)
React 18 introduces a useId hook for generating an ID that is hydration-safe (stable across client and server renders) but still globally unique. You can use it to solve this problem. I use the following component in place of Select:
import React, { useId } from 'react';
import Select from 'react-select';
export default function StableSelect({ ...props }) {
return <Select {...props} instanceId={useId()} />;
}
You can use this component exactly like Select, but it won’t raise any hydration errors since its ID is stable.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With