最新消息:Welcome to the puzzle paradise for programmers! Here, a well-designed puzzle awaits you. From code logic puzzles to algorithmic challenges, each level is closely centered on the programmer's expertise and skills. Whether you're a novice programmer or an experienced tech guru, you'll find your own challenges on this site. In the process of solving puzzles, you can not only exercise your thinking skills, but also deepen your understanding and application of programming knowledge. Come to start this puzzle journey full of wisdom and challenges, with many programmers to compete with each other and show your programming wisdom! Translated with DeepL.com (free version)

javascript - Reset component state in React Native - Stack Overflow

matteradmin9PV0评论

I want to reset the state of only certain (not all) states. On the click of a button, values of present_count, total_count, present and total should be set to their initial state (0). While the state of subjects and text should remain intact.

constructor(props) {
    super(props);
    this.state = { 
      subjects: [],
      text: "",
      present_count: [0, 0, 0, 0, 0, 0, 0],
      total_count: [0, 0, 0, 0, 0, 0, 0],
      present: 0,
      total: 0
    }
}

EDIT: I am using AsyncStorage to save the modified state.

I want to reset the state of only certain (not all) states. On the click of a button, values of present_count, total_count, present and total should be set to their initial state (0). While the state of subjects and text should remain intact.

constructor(props) {
    super(props);
    this.state = { 
      subjects: [],
      text: "",
      present_count: [0, 0, 0, 0, 0, 0, 0],
      total_count: [0, 0, 0, 0, 0, 0, 0],
      present: 0,
      total: 0
    }
}

EDIT: I am using AsyncStorage to save the modified state.

Share Improve this question edited May 28, 2020 at 3:06 cmcodes asked May 27, 2020 at 4:13 cmcodescmcodes 1,87821 silver badges25 bronze badges
Add a ment  | 

3 Answers 3

Reset to default 2

You can use spread operator to override the current state values and then use the current state value of text, subjects:

// default state 
const defaultState = {
  subjects: [],
  text: "",
  present_count: [0, 0, 0, 0, 0, 0, 0],
  total_count: [0, 0, 0, 0, 0, 0, 0],
  present: 0,
  total: 0
}

// ponent constructor.
constructor(props) {
    super(props);
    this.state = { ...defaultState };
}

// click event handler    
handleClick = () => {
  this.setState({
    ...defaultState,
    subjects: this.state.subjects,
    text: this.state.text
  });
}

You can create an object store your state your initial state of states you want to reset, like this:

const initState = {
   total: 0,
   present: 0,
   present_count: [0, 0, 0, 0, 0, 0, 0],
   total_count: [0, 0, 0, 0, 0, 0, 0],
}

and then you can

this.setState({
   ...initialState
})

on your button onClick

Hope that help. ^^

Using the spread operator would likely be useful here.

constructor(props) {
    super(props);
    this.defaultState = {
      present_count: [0, 0, 0, 0, 0, 0, 0],
      total_count: [0, 0, 0, 0, 0, 0, 0],
      present: 0,
      total: 0
    }
    this.state = { 
      subjects: [],
      text: "",
      ...defaultState,
    }
}
.
.
.
onClick = () => {
  this.setState({
    ...this.defaultState, // This will only pass in values from your defaultState and leave the others (subjects & text) alone
  });
}
Post a comment

comment list (0)

  1. No comments so far