Semantic UI React is the official React integration for Semantic UI .
Installation instructions are provided in the Usage section.
jQuery is a DOM manipulation library. It reads from and writes to the DOM. React uses a virtual DOM (a JavaScript representation of the real DOM). React only writes patch updates to the DOM, but never reads from it.
It is not feasible to keep real DOM manipulations in sync with React's virtual DOM. Because of this, all jQuery functionality has been re-implemented in React.
Declarative APIs provide for robust features and prop validation.
Control the rendered HTML tag, or render one component as
another component. Extra props are passed to the component you are rendering as
.
Augmentation is powerful. You can compose component features and props without adding extra nested components. This is essential for working with MenuLinks
and react-router
.
Shorthand props generate markup for you, making many use cases a breeze. All object props are spread on the child components.
Components with repeating children accept arrays of plain objects. Facebook is fond of this over using context to handle parent-child coupling and so are we.
The icon
prop is standard for many components. It can accept an Icon name
, an Icon props object, or an <Icon />
instance.
The image
prop is standard for many components. It can accept an image src
, an Image props object, or an <Image />
instance.
Sub components give you complete access to the markup. This is essential for flexibility in customizing components.
React has the concept of controlled and uncontrolled components.
Our stateful components self manage their state out of the box, without wiring. Dropdowns open on click without wiring onClick
to the open
prop. The value is also stored internally, without wiring onChange
to value
.
If you add a value
prop or an open
prop, the Dropdown delegates control for that one prop to your value. The other props remain auto controlled. Mix and match any number of controlled and uncontrolled props. Add and remove control at any time by adding or removing props. Everything just works.
Take a look at our ModernAutoControlledComponent
to see how this was done. See the docs try it out live.