Стили и рендеринг для форм и элементов ввода в SUI и SUIR становятся немного сложнее.Особенно после того, как вы абстрагируете визуализированную разметку в компоненты React.
Что на самом деле происходит в Semantic UI React?Давайте посмотрим:
// This...
<Input placeholder='Search...' />
// Renders this in the DOM
<div class="ui input">
<input placeholder="Search..." type="text">
</div>
Имеет смысл до сих пор.Но, рассмотрев это ближе, мы получим ключ к пониманию того, в чем заключается наша проблема.Как мы думаем, где будут применяться встроенные стили, когда мы используем styles
проп?На внешнем <div>
или на <input>
?
// This...
<Input
placeholder='Search...'
styles={{borderRadius: '100px'}}
/>
// Renders this in the DOM - Not what we want :(
<div class="ui input" style="border-radius: 100px;">
<input placeholder="Search..." type="text">
</div>
Теоретически выше может быть хорошо, если стили для входов семантического пользовательского интерфейса были исключительно на родительском div.ui.input
.Не все из них на самом деле.Некоторые стили явно нацелены на дочерний элемент <input>
с .ui.input > input {...}
, в котором заключается наша проблема, если мы хотим передать стили исключительно в React с помощью styles
prop.
Итак, как нам получить стили наэтот внутренний <input>
без написания отдельного, более конкретного CSS, который переопределяет скомпилированные стили Semantic UI?К счастью, Semantic UI React фактически позволяет вам передать <input>
как React children
.Взгляните на это:
// This...
<Input placeholder='Search...'>
<input style={{borderRadius: '100px'}} />
</Input>
// Gives us this, which is what we want!
<div class="ui input">
<input placeholder="Search..." type="text" style="border-radius: 100px;"> .
</div>
Надеюсь, вы найдете этот ответ на свой предыдущий вопрос вовремя, чтобы помочь вам.Я добавил быстрый скриншот ниже, чтобы показать, как это выглядит.
![enter image description here](https://i.stack.imgur.com/u8T4y.png)