2017-09-07 2 views
0

AsyncStorage를 사용하여 집을 배열에 저장하려고합니다. 각 배열 요소는 집 개체를 나타냅니다. 그리고 각 집 객체에는 위도, 경도 및 집 번호가 있습니다. 나는 이것을 어떻게 표현할 지 잘 모릅니다. AsyncStorage는 프로그래밍 방식으로 업데이트 할 수있는 동적 객체를 저장하는 데 적합하지 않습니다. 더 많은 주택을 추가하고 일부 주택을 지우고 싶습니다. 기본적으로 내가하려고하는 것은 사용자가 클릭 할 때 일부 주택을 북마크에 추가하고 북마크에서 삭제하는 것입니다. 아무도 도와 줄 수 있습니까?React Native AsyncStorage

+0

내가 0으로 질문을 위로 upvoted : 그것은 텍스트의 벽이지만, 나는 그것이 AsyncStorage가 RN 워드 프로세서에 문서화 된 방법을 주어진 스마트 질문입니다 생각합니다. 문자열을 저장해야하지만 실제로 문자열을 문자열 화하고 업데이트 된 필드를 병합 할 수 있습니다. AsyncStorage.mergeItem()을 참조하십시오. 귀하의 질문에 대한 답변도 매우 잘 진행되었습니다. – agm1984

답변

2

AsyncStorage는 이것에 절대적으로 적합합니다.

주택 ()의 구조로 시작하여 개별 주택을 나타내는 개체를 저장하는 배열을 만들 것입니다. 당신이 AsyncStorage에 컬렉션을 기록 할 때 AsyncStorage에 저장

const houses = [ 
    { 
    number: 1, 
    latitude: 51.5033, 
    longitude: -0.119519 
    } 
] 

,이 같은 할 것 :

AsyncStorage 
    .setItem('@houses', JSON.stringify(houses)) 
    .then(houses => console.log(houses) 

static setItem(key: string, value: string, callback?: ?(error: ?Error) => void)

또한 경우 async/await을 사용할 수 있습니다 프로젝트가 프로젝트를 지원하도록 설정되었습니다. 당신은 당신과 같이하십시오 당신의 상태에서 응답을하시기 바랍니다 설정할 수

AsyncStorage 
    .getItem('@houses') 
    .then(houses => console.log(JSON.parse(houses))) 

:를 통해 AsyncStorage에서 다시 컬렉션을 읽기

AsyncStorage에서 읽기

간단하게 이루어집니다.

특정 집

삭제이 앱을 위로 설정하는 방법에 전적으로 의존한다. 각 주택을 통해 map에 갈 예정이며 예를 들어 목록 구성 요소를 만드시겠습니까? 이 경우 (오른쪽 테두리를 잃고 죄송)

enter image description here

, 당신은 할 수 :

houses.map(house => (
    <View> 
    <Text>Number: {house.number}</Text> 
    <Text>Latitude: {house.latitude}</Text> 
    <Text>Longitude: {house.longitude</Text> 
    <Button onPress={() => this.deleteHouse(house.number)}/> 
    </View> 
)); 

그런 다음 그것을 처리하는 deleteHouse 기능을 만들 수 있습니다.

const deleteHouse = (number) => { 
    const { houses } = this.state; // Assuming you set state as previously mentioned 
    const newHouses = houses.filter((house) => house.number != number); 
    this.setState({houses: newHouses},() => saveHouses); 
} 

마지막으로 saveHouses을 AsyncStorage에 다시 동기화하십시오. 이 기능은 AsyncStorage를 지우고 새 주택을 저장합니다.

const saveHouses =() => { 
    const { houses } = state; 
    AsyncStorage 
    .removeItem('@houses') 
    .then(() => { 
     AsyncStorage 
     .setItem('@houses', JSON.stringify(houses)) 
     .then(houses => console.log(houses) 
    }); 
} 
0

Realm과 같은 Sqlite 대안이 필요합니다. 무료이며 빠르고 쉽게 코딩 할 수 있으므로 필요에 따라 수천 시간의 작업 시간을 절약하고 쿼리를 생성하고 업데이트하고 삭제할 수 있습니다.