Controlled Mode
In controlled mode, the parent React component updates a DevExtreme component's state. It should pass new values to the DevExtreme component via properties, as with the value
property of the TextBox
component in the following code.
DevExtreme components raise events that you should handle to update the parent component's state. These events are raised only when a user interacts with the component, not when you update a property value programmatically. Each event name is based on the property name. For example, the event for the value
property is onValueChange
. An event handler accepts a new property value as a parameter:
import React from 'react'; import 'devextreme/dist/css/dx.common.css'; import 'devextreme/dist/css/dx.light.css'; import TextBox from 'devextreme-react/text-box'; class App extends React.Component { constructor(props) { super(props); this.state = { text: 'TEXT' }; this.handleValueChange = this.handleValueChange.bind(this); } render() { return ( <div> <TextBox value={this.state.text} onValueChange={this.handleValueChange} valueChangeEvent="input" /> <br /> <div>{this.state.text}</div> </div> ); } handleValueChange(value) { this.setState({ text: value.toUpperCase() }); } } export default App;
Uncontrolled Mode
In uncontrolled mode, DevExtreme components maintain and update their own state.
To specify an initial property value in this mode, add the default
prefix to the property name. In the example below, the defaultCurrentDate
attribute is used to define the currentDate
property's initial value.
import React from 'react'; import 'devextreme/dist/css/dx.common.css'; import 'devextreme/dist/css/dx.light.compact.css'; import Scheduler from 'devextreme-react/scheduler'; const appointments = [{ text: 'Website Re-Design Plan', startDate: new Date(2019, 4, 22, 9, 30), endDate: new Date(2019, 4, 22, 11, 30) }, { text: 'Book Flights to San Fran for Sales Trip', startDate: new Date(2019, 4, 22, 12, 0), endDate: new Date(2019, 4, 22, 13, 0), allDay: true }, { text: 'Install New Router in Dev Room', startDate: new Date(2019, 4, 23, 10, 30), endDate: new Date(2019, 4, 23, 16, 30) }]; class App extends React.Component { render() { return ( <Scheduler dataSource={appointments} height={600} editing={false} defaultCurrentDate={new Date(2019, 4, 22)} startDayHour={9} /> ); } } export default App;
If you have technical questions, please create a support ticket in the DevExpress Support Center.