React-Select: Wie behebe ich „Warnung: Prop-ID stimmte nicht überein“

Lesezeit: 3 Minuten

Benutzer-Avatar von Sonjoy Datta
Sonjoy Datta

Ich habe eine Web-App mit ReactJs und NextJs. In einer funktionalen Komponente habe ich verwendet Reagieren-Auswählen Dann erhalte ich die folgende Konsolenwarnung:

Warnung: Prop id hat nicht gepasst. Server: „react-select-7-input“ Client: „react-select-2-input“

Mein Code ist der folgende:

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;

  • Haben Sie versucht, das einzustellen? instanceId? Siehe hier: reagieren-select.com/props Und github.com/JedWatson/react-select/issues/2629

    – David

    18. April 2020 um 15:52 Uhr

  • Ich habe ersetzt id="postType" als instanceId="postType". In der Konsole wird immer noch ein Fehler angezeigt.

    – Sonjoy Datta

    19. April 2020 um 5:11 Uhr

  • Haben Sie das jemals herausgefunden? Ich denke, es hat etwas mit der Rehydrierung einer SSR React-App zu tun, bin mir aber nicht sicher, wie ich das lösen kann.

    – serraosays

    3. Juli 2020 um 22:15 Uhr

Versuchen Sie, eine Stütze hinzuzufügen instanceId Als eindeutige Zeichenfolge festgelegt und sollte funktionieren

  • Getestet auf React-Select mit Next.js, es funktioniert keine Warnung mehr. Danke!

    – winadiw

    5. Okt. 2020 um 13:16 Uhr

  • Ich arbeite mit Next.js und React-Select und bei mir funktioniert es, danke.

    – Raul

    21. Januar 2021 um 11:37 Uhr

  • Hey, ich habe es gerade getestet und es funktioniert! Danke!

    – oriol.puig

    26. Mai 2021 um 16:03 Uhr

  • Zu Ihrer Information: Die Großschreibung zählt. Ich konnte nicht darauf zugreifen, bis mir endlich klar wurde, dass ich eine Instanz-ID und keine Instanz-ID hatte

    – Gorlaz

    25. April 2022 um 22:20 Uhr

  • Zu Ihrer Information: Wenn dieser Fehler bei der Arbeit mit next.js und „@fortawesome/react-fontawesome“ auftritt, ist die zu verwendende Eigenschaft titleId.

    – Benutzer3174311

    20. Mai 2022 um 13:20 Uhr

Reaktion 18 führt a ein useId Hook zum Generieren einer ID, die hydrationssicher (stabil über Client- und Server-Renderings hinweg), aber dennoch global eindeutig ist. Sie können es verwenden, um dieses Problem zu lösen. Ich verwende die folgende Komponente anstelle von Select:

import React, { useId } from 'react';
import Select from 'react-select';

export default function StableSelect({ ...props }) {
  return <Select {...props} instanceId={useId()} />;
}

Sie können diese Komponente genau so verwenden Selectaber es werden keine Hydratationsfehler ausgelöst, da seine ID stabil ist.

  • Hat bei mir bei den neuesten Next/React-Installationen funktioniert

    – Mike Bourbeau

    8. September 2022 um 17:49 Uhr

Für die ausgewählte Komponente ist eine Instanz-ID erforderlich. Die ID ist obligatorisch. Fügen Sie sie also einfach hinzu

id=”Long-Value-Select” InstanzId=”Long-Value-Select”

zu Ihrer Select-Komponente wird die Warnung entfernt 🙂

<Select
  className={className}
  name={field.name}
  id="long-value-select"
  instanceId="long-value-select"
  value={getValue()}
  onChange={onChange}
  placeholder={placeholder}
  options={options}
  isMulti={isMulti}
/>

Instanceid sollte eine beliebige Zeichenfolge in React Select Props sein, es wird auf jeden Fall funktionieren …

instanceId = "select-box"

1453870cookie-checkReact-Select: Wie behebe ich „Warnung: Prop-ID stimmte nicht überein“

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy