Get Data from State React-Native Javascript

Course Queries Syllabus Queries 3 years ago

3.12K 2 0 0 0

User submissions are the sole responsibility of contributors, with TuteeHUB disclaiming liability for accuracy, copyrights, or consequences of use; content is for informational purposes only and not professional advice.

Answers (2)

Post Answer
profilepic.png
manpreet Tuteehub forum best answer Best Answer 3 years ago


This is puzzling me why I can't get data from the state, I have tried many things but not had no luck.

I'm getting data from a firebase database and I am trying to store the data into a state, then I can access that data from the state.

Any suggestions will be appreciated.

Thank you

state = {
   isDateTimePickerVisible: false,
   mode: "time",
   minuteInterval: 30,
   selectedDate: {},
   isLoading: true,
   syllabus: [{value: 'Banana'}],
   users: [{
     value: 'Banana',
     app_id: 'apple',
   }],
  timeSlots:[{
     name: 'test',
     time: '123',
  }],
};

testStore() {

let returnArr = [];

  db.ref('bookings/' + this.user).child("22-09-2018").once('value').then(function(snapshot) {
     let data = snapshot.val();
     let timeSlot = Object.values(data);
     console.log("testStore: " + timeSlot[0].name);
     //gets data from the firebase database -- testStore: james
     dt = timeSlot;

     this.setState({
       timeSlots: dt
     });

}.bind(this));
  this.testState();
}

testState() {
  console.log("test state " + this.state.timeSlots[0].name);
  //Get A red screen with error undefined is not an object(evaluating 'this.state.timeSlots['name']) 
}

    onDayPress(day) {

        console.log("day press " + day.dateString);
        this.testStore();
        var st = day.dateString;
        var dt = new Date(st);

        var today = dt;
        var dd = today.getDate();
        var mm = today.getMonth() + 1; //January is 0!

        var yyyy = today.getFullYear();
        if (dd < 10) {
            dd 
0 views
0 shares

profilepic.png
manpreet 3 years ago

From your complete code, it seems that your constructor is rewriting your state to an empty object (therefore this.state.timeSlots[0].name is indeed problematic)

I'd rewrite your constructor as :

constructor(props) {
    super(props)
    this.state = {
      isDateTimePickerVisible: false,
      mode: 'time',
      minuteInterval: 30,
      selectedDate: {},
      isLoading: true,

      syllabus: [{
        value: 'Banana',
      }],
      users: [{
        value: 'Banana',
        app_id: 'apple',
      }],

      slots: [{
        name: 'test',
        time: '123',
        user_id: '373737',
      }],
    }
this.onDayPress = this.onDayPress.bind(this)
this.testStore = this.testStore.bind(this)

}

and testStore as :

testStore() {
      const returnArr = []

      db.ref(`bookings/${this.user}`).child('22-09-2018').once('value').then((snapshot) => {
        const data = snapshot.val()
        const timeSlot = Object.values(data)

        console.log(`testStore: ${timeSlot[0].name}`)

        dt = timeSlot

        this.setState({
            timeSlots: dt
        }, () => {
            console.log('after setState', this.state.timeSlots)
        })
      })
    }

0 views   0 shares

No matter what stage you're at in your education or career, TuteeHUB will help you reach the next level that you're aiming for. Simply,Choose a subject/topic and get started in self-paced practice sessions to improve your knowledge and scores.

Similar Forum