Неопределенный не является объектом (вычисление ‘this.setState’)

#react-native

#react-native

Вопрос:

Я получаю значение из общих настроек, но при попытке сохранить это значение в this.state я получаю указанную выше ошибку. Я хочу получить доступ к бизнес-идентификатору глобально, поэтому сохраняю в this.state. Любая помощь будет оценена. Спасибо.

 this.state = {
  businessId: ""
};

SharedPreferences.getItem("business_entity_id",function(value){
  this.setState({businessId:value}).bind(this);

  console.log("val",this.state.businessId);
}); 

console.log("businessId for shared Preference:", this.state.businessId);
  

Комментарии:

1. поделитесь своим кодом более четко

2. вы можете использовать функцию со стрелкой (значение)=>{} в обратном вызове вместо функции (значения){}. вы получите глобальное «это» в функции со стрелкой.

3. экспорт класса по умолчанию MainCalendarScreen расширяет React. Компонент { конструктор (реквизит) { супер(реквизит); var SharedPreferences = require(‘реагировать-собственные-общие-предпочтения’); this.state = { bussinessId: «» }; SharedPreferences.GetItem(«business_entity_id», функция (значение){ this.setState({bussinessId:значение}).bind(this); console.log(«val»,this.state. bussinessId); }); console.log(«bussinessId для общих предпочтений:»,this.state.bussinessId); } Мой код

4. можете ли вы отредактировать свой вопрос и добавить туда код? Также почему вы привязываете свой setstate?

5. Как использовать значение вне функции общих предпочтений? Пример: когда я пытаюсь вывести значение в консоли из этой функции, оно показывает неопределенное или пустое

Ответ №1:

Вы можете использовать функцию стрелки () => {} для функции() {}, потому что когда вы используете функцию стрелки, она передаст это в функцию

 this.state = {
  businessId: ""
};

SharedPreferences.getItem("business_entity_id",(value) => {
  this.setState({businessId:value}).bind(this);

  console.log("val",this.state.businessId);
}); 

console.log("businessId for shared Preference:", this.state.businessId);
  

Комментарии:

1. выводится значение внутри функции, но как использовать значение вне функции общих предпочтений? Пример: когда я пытаюсь напечатать значение в консоли, подобное этому console.log(«BusinessID для общих предпочтений:», this.state.BusinessID); из этой функции он показывает неопределенный или пустой

Ответ №2:

Находится ли ваш код внутри React.Component ? Вы не можете вызвать его за пределами React.Component .

Это должно сработать:

 import React from "react";
import SharedPreferences from "react-native-shared-preferences";

class MyComponent extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      businessId: "",
    };
  }

  componentDidMount() {
    SharedPreferences.getItem("key", (value) => {
      this.setState({ businessId: value });
    });
  }

  render() {
    return (
      <View></View>
    );
  }
}