Heim  >  Fragen und Antworten  >  Hauptteil

Verschönern Sie Eingabe-Tags in ReactJs mithilfe von CSS-Stilen

<p>Ich habe die folgende Komponente in meiner React JS-Anwendung: </p> <pre class="brush:php;toolbar:false;">const Input = ({name, ..rest}) => zurückkehren ( <div> <input type="text" name={name} {...rest}/> {Fehler && <span>Fehler: Bitte fügen Sie Ihren Namen hinzu</span>} </div> ); };</pre> <p><code>rest</code>Die Parameter umfassen alle<code>React.InputHTMLAttributes<HTMLInputElement></code>, wie z. B. erforderlich, Klassenname, ID usw. </p><p>Ich habe Probleme beim Hinzufügen des Attributs <code>style</code> Wenn ich so etwas hinzufüge: </p> <p><code>margin-bottom: 45px</code></p> <p> Dann gibt es ein Leerzeichen zwischen dem Eingabefeld und der Spanne, aber dieses Leerzeichen sollte der Abstand der gesamten Komponente sein, sodass der Abstand unterhalb der Komponente und nicht zwischen den Elementen der Komponente angewendet werden sollte. </p> <p>Wie kann ich dieses Problem vermeiden und das Attribut <code>...rest</code> beibehalten? </p> <p>Hinweis: Zusätzlich zu <code>style</code> können Sie auch <code>className</code>, <code>id</code>, <code> verwenden Kontext ;erforderlich</code>etc. </p>
P粉619896145P粉619896145414 Tage vor610

Antworte allen(1)Ich werde antworten

  • P粉511896716

    P粉5118967162023-09-02 12:25:33

    您可以从rest中提取出style属性,然后删除其margin属性(之前设置的),并用您自定义的marginBottom: 45覆盖它。

    const Input = ({ name, style, ...rest }) => {
      const { margin, ...restStyles } = style;
      const newStyles = {
        ...restStyles,
        marginBottom: 45,
      };
    
      return (
          <div>
            <input type="text" name={name} {...rest} style={newStyles} />
                                                   // ^^^^^^^^^ 应用新样式
            {errors && <span>错误:请添加您的姓名</span>}
          </div>
      );
    };

    Antwort
    0
  • StornierenAntwort