classExampleextendsReact.Component{
state ={user:{name:'John',age:25}};updateUser=()=>{// 浅合并:只更新指定的字段this.setState({user:{...this.state.user,// 保留其他字段age:26}});};}
classFormextendsReact.Component{
state ={username:'',email:''};handleChange=(e)=>{const{ name, value }= e.target;this.setState({[name]: value
});};render(){return(<form><input
name="username"
value={this.state.username}
onChange={this.handleChange}/><input
name="email"
value={this.state.email}
onChange={this.handleChange}/></form>);}}
3.2 异步操作
classUserProfileextendsReact.Component{
state ={user:null,loading:false,error:null};fetchUser=async()=>{this.setState({loading:true});try{const response =awaitfetch('/api/user');const user =await response.json();this.setState({ user,loading:false});}catch(error){this.setState({ error,loading:false});}};}
3.3 复杂状态更新
classTodoListextendsReact.Component{
state ={todos:[]};addTodo=(text)=>{this.setState(prevState=>({todos:[...prevState.todos,{id: Date.now(), text,completed:false}]}));};toggleTodo=(id)=>{this.setState(prevState=>({todos: prevState.todos.map(todo=>
todo.id === id
?{...todo,completed:!todo.completed }: todo
)}));};}