लगभग इसी तरह का प्रश्न पहले पूछा गया था, लेकिन मैं इसे अपने मामले में समझ नहीं पाया, इसलिए यह है (मैं प्रतिक्रिया-मूल और एक्सपो का उपयोग कर रहा हूं):

मैं एक टू-डू ऐप के लिए अपने कोड का परिणाम देखने के लिए क्रोम का उपयोग कर रहा था और यह तब तक अच्छी तरह से काम कर रहा था जब तक कि मैं इसे अपने फोन में आज़माना नहीं चाहता था कि "एडटोडो" फ़ंक्शन को कॉल करने के बाद मुझे इसका सामना करना पड़ा:

लेखन त्रुटि: शून्य एक वस्तु नहीं है ('arr.push' का मूल्यांकन)

यह कोड है:

addTodo = () => {
var newTodo = this.state.text;
var arr = this.state.todo;
if (!newTodo) {
  alert("Empty!");
} else {
  arr.push(newTodo);
  this.setState({ todo: arr, text: "" });
   this.setDataLocally();
}

"पाठ" में इनपुट से आने वाली स्ट्रिंग शामिल है और इसे "टूडू" सरणी में जोड़ा जाएगा।

जैसा कि आप देख सकते हैं "arr.push" को केवल तभी बुलाया जाना चाहिए जब "newTodo" रिक्त या खाली न हो।

जब मैं Asyncstorage का उपयोग करना चाहता हूं तो मुझे केवल त्रुटि मिलती है। उपरोक्त कोड के अंत में यही कहा जाना चाहिए:

  setDataLocally = () => {
var jsonData = JSON.stringify(this.state.todo);
AsyncStorage.setItem("list", jsonData);

मुझे क्या करना चाहिए? अग्रिम में धन्यवाद!

2
Mahdi 11 सितंबर 2020, 22:58

1 उत्तर

सबसे बढ़िया उत्तर

समस्या यह है कि आपका चर शून्य है .. लेकिन यह एक सूची की अपेक्षा करता है।

ये कोशिश करें:

addTodo = () => {
var newTodo = this.state.text;
var arr = this.state.todo !== null ? this.state.todo : [];
if (!newTodo) {
  alert("Empty!");
} else {
  arr.push(newTodo);
  this.setState({ todo: arr, text: "" });
   this.setDataLocally();
}
1
Nicolas Losson 12 सितंबर 2020, 00:30