MovGP0    Über mich    Hilfen    Artikel    Weblinks    Literatur    Zitate    Notizen    Programmierung    MSCert    Physik   

React

  • Framework für UI
// Bootstrappingconst mountNode = document.getElementById('example');const element = <HelloMessage />;ReactDom.render(element, mountNode); // short: ReactDom.render(<HelloMessage />, document.getElementById('example'));// Komponenteclass HelloMessage extends React.Component {  render(){    return React.createElement('h1', null, 'Hello World!');  }}// Komponente als Funktion ohne JSXfunction HelloMessage(){  return React.createElement('h1', null, 'Hello World!');}// Komponente als Funktion mit JSXfunction HelloMessage(){  return <h1><Message name='World' /></h1>;}// Komponente mit Properties als Funktionfunction Message(props) {  return <span>{'Hello, ' + props.name}</span>;}// Komponente mit Properties als Klasseclass Message extends React.Component {  constructor(props){    super(props);    this.state = {name: props.name};  }  render() {    return (      <div>        Hello {this.state.name}!      </div>    );  }}

Properties

Object-Deconstructor
export default function ChoiceBar({ title, count, percent}) { // deconstructor of ChoiceBar(props)    // ... } ChoiceBar.propTypes = {     title: React.PropTypes.string.isRequired,     count: React.PropTypes.number.isRequired,     percent: React.PropTypes.number.isRequired }
Object-Spread-Operator
const myProps = {     title: 'React introduction',     underline: true,     size: 24 } return <TitleComponent size={28} {... myProps} />; // size-property wird überschrieben
Property Types
Property Types
React.PropTypes.Typ
bool, number, stringBasistyp
funcFunktion/Lambda-Austruck
nodeWert der von React geändert werden kann (number, number[], string, string[], ReactElement, ReactElement[])
elementReactElement
instanceOf(type)Interface/Klasse
array, arrayOf(type)
oneOf(typearray)Wert, welcher ALLE im array angegebenen Typen darstellt
oneOfType(typearray)Wert, welcher EINE im Array angegebenen Typen darstellt
object
objectOf(type)Wert, welche die im Typ angegebenen Properties implementiert (auch ohne von diesem zu erben)
shapeObjekt in beschreibender Form
anyalles
Shape
Title.propTypes = {     title: React.PropTypes.string.isRequired,     font: React.PropTypes.shape({         size: React.PropTypes.number.isRequired,         name: React.PropTypes.string     }).isRequired }

State

  • this.state ist per default undefined und kann erst verwendet werden, wenn dieser gesetzt wurde
    • im Konstrukor mit this.state = {...}
    • in Funktionen mit this.setState(...)
  • this.setState(...) darf nicht im Konstruktor aufgerufen werden
  • Aufruf von this.setState(...) erfolgt asynchron und rendert den DOM neu
  • wenn this.state direkt gesetzt wird, wird der DOM nicht neu gerendert
Beispiele
// setting state directlythis.setState({     title: 'Hello World',     underline: false });// setting state with lambda method this.setState((currentState, currentProperties)) => ...);// callback when state got changedthis.setState(..., () => OnStateChangedCompleted()); // may use lifecycle method 'componentDidUpdate' instead

|}