Javascript React本机应用程序-使用域存储数据
与React Native仍处于学习曲线上。我读过领域文档和其他论坛,但似乎找不到将数据写入领域这个看似简单的概念的答案。比如, 在我的代码中,我从本地json文件接收数据(用户列表),并能够访问和显示他们的信息 我正在努力解决的问题是onPress函数Javascript React本机应用程序-使用域存储数据,javascript,ios,json,react-native,realm,Javascript,Ios,Json,React Native,Realm,与React Native仍处于学习曲线上。我读过领域文档和其他论坛,但似乎找不到将数据写入领域这个看似简单的概念的答案。比如, 在我的代码中,我从本地json文件接收数据(用户列表),并能够访问和显示他们的信息 我正在努力解决的问题是onPress函数bookmarkItem。按下按钮后,我想领域。将json文件中的某些数据写入领域。如何在我的领域数据库中存储say{{user.login.username}}的值???以下是相关代码 import { users } from '../con
bookmarkItem
。按下按钮后,我想领域。将json文件中的某些数据写入领域。如何在我的领域数据库中存储say{{user.login.username}}
的值???以下是相关代码
import { users } from '../config/data';
import Realm from 'realm'
class Article {}
Article.schema = {
name: 'Article',
properties: {
key: 'data',
image: 'data',
title: 'data',
}
};
let realm = new Realm({schema: [Article]});
class Feed extends Component {
onLearnMore = (user) => {
this.props.navigation.navigate('Details', { ...user });
};
bookmarkItem = (user) => {
realm.write(() => {
realm.create('Article', {
key: {{user.login.username}},
image: {{ uri: user.picture.large}},
title: {{user.name.first}},
});
});
};
render() {
return (
<ScrollView>
{users.map((user) => (
<Card key={user.login.username}>
<CardItem header>
<Right>
<Button onPress={() => this.bookmarkItem(user)}>
<Icon name="bookmark" />
</Button>
</Right>
</CardItem>
<CardItem cardBody onPress={() => this.onLearnMore(user)}>
<Image source={{ uri: user.picture.large }}/>
</CardItem>
<CardItem content>
<Text>{user.name.first} {user.name.last}</Text>
</CardItem>
</Card>
))}
</ScrollView>
);
}
从“../config/data”导入{users};
从“领域”导入领域
类文章{}
Article.schema={
名称:'文章',
特性:{
关键字:“数据”,
图像:“数据”,
标题:“数据”,
}
};
let realm=新领域({schema:[Article]});
类提要扩展了组件{
onLearnMore=(用户)=>{
this.props.navigation.navigate('Details',{…user});
};
bookmarkItem=(用户)=>{
realm.write(()=>{
realm.create('Article'{
键:{{user.login.username},
图像:{{uri:user.picture.large},
标题:{{user.name.first}},
});
});
};
render(){
返回(
{users.map((用户)=>(
this.bookmarkItem(用户)}>
此.onLearnMore(用户)}>
{user.name.first}{user.name.last}
))}
);
}
显然,我对模式数据类型的使用以及如何以及在何处正确执行realm.write函数还不太了解。任何帮助都将不胜感激。
干杯您不必在渲染函数的JSX元素之外使用{{}
。不要使用{{user.login.username}
而是在域中使用user.login.username
。创建函数
同样,对于图像,您不应该使用uri:user.picture.large
只要user.picture.large
就足够了。稍后您可以将该变量用作uri。嘿,Dani,感谢您抽出时间回答我的问题。我可以再问一个问题吗?我已经将数据保存到realm,并打算在单独的组件中检索它(书签/收藏夹功能的书签屏幕)。我以前很少真正使用state,您如何看待state在两个组件之间保存和检索数据的过程中的作用?也许要在保存时更改图标,但也许有一些地方我需要使用状态,但我没有想到?再次感谢。DuncanI Duncan,顾名思义代表ur组件的当前状态。如果您使用的是React,那么应该使用states。隐马尔可夫模型。。。我可以看到您在组件渲染函数中直接使用了users
变量。这不是一个好的做法。您应该将用户声明为状态,即state={users:'a value'}
,当您需要更改用户的值时,您应该使用this.setState({users:'new value'})
。幕后this.setState
处理所有约束。简言之。。。React组件根据状态呈现JSX。感谢您的解释。用户
数据不会更改,只会显示在屏幕上,即使我的组件不会更改,是否仍需要使用状态?是的!这是必要的,因为您不知道将来是否希望用户数据动态化。安全总比后悔好