AsyncStorage mergeItem promise返回空

时间:2018-01-20 03:47:33

标签: javascript react-native react-redux asyncstorage

我在下面有以下JSON数据结构:

{
  Category1 : { 
      id:1,
      subCategory : [
         {
           pairA: 'JavaScript is?',
           pairB: 'JS',
         },
         {
           pairA: 'Hypertext Markup Language is?',
           pairB: 'HTML',
         },
      ]
  },
  Category2 : { 
      id:2,
      subCategory : [
         {
           pairA: 'Hypetext Transfer Protocol is?',
           pairB: 'HTTP',
         },
         {
           pairA: 'File Transfer Protocol is?',
           pairB: 'FTP',
         },
      ]
  },
}

现在,让我们说我要为Category1密钥合并以下内容。

const line = {
  Category1 : { 
      id:1,
      subCategory : [
         {
           pairA: 'JavaScript is?',
           pairB: 'JS',
         },
         {
           pairA: 'Hypertext Markup Language is?',
           pairB: 'HTML',
         },
         {
           pairA: 'Post Office Protocol 3?',
           pairB: 'POP3',
         },
      ]
  },
}

注意我只为Category1添加以下内容:

         {
           pairA: 'Post Office Protocol 3?',
           pairB: 'POP3',
         },

现在,在我的代码中,我调用了以下操作:

 this.props.addLineToCategory("Category1", line)

这是Redux 操作本身:

 export function addLineToCategory(key, item) {
 console.log("key",key)
 console.log("item",item)
 return (dispatch) => 
 { 
    AsyncStorage.mergeItem(CATEGORY_KEY, JSON.stringify({
       [key]:item
    })).then((data)=>{console.log("Data for dispatch",data); dispatch(addEntry(data)) })
    .catch((error)=>{console.log('Adding line error : ',error)});  
 }   
}

console.log("key",key)的结果:

key Category1

console.log("item",item)的结果:

 item Object {
  "Category1": Object {
     "id":1,
     "subCategory": Array [
        Object {
         {
           pairA: 'JavaScript is?',
           pairB: 'JS',
         },
         {
           pairA: 'Hypertext Markup Language is?',
           pairB: 'HTML',
         },
         {
           pairA: 'Post Office Protocol 3?',
           pairB: 'POP3',
         },
        }
      ]
     }
   }

目前的结果与预期一致。但PromiseAsyncsStorage.mergeItem()中返回的console.log("Data for dispatch",data)null。我期待所有东西的合并值,但不幸的是它提到null。顺便说一句,我也是ReactReact Native的新手。

0 个答案:

没有答案