Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript React本机应用程序-使用域存储数据_Javascript_Ios_Json_React Native_Realm - Fatal编程技术网

Javascript React本机应用程序-使用域存储数据

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

与React Native仍处于学习曲线上。我读过领域文档和其他论坛,但似乎找不到将数据写入领域这个看似简单的概念的答案。比如,

在我的代码中,我从本地json文件接收数据(用户列表),并能够访问和显示他们的信息

我正在努力解决的问题是onPress函数
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。感谢您的解释。
用户
数据不会更改,只会显示在屏幕上,即使我的组件不会更改,是否仍需要使用状态?是的!这是必要的,因为您不知道将来是否希望用户数据动态化。安全总比后悔好