小编kac*_*e91的帖子

如何以编程方式更改React上下文?

我正在尝试使用新的React上下文来保存有关已登录用户的数据.

为此,我在一个名为的文件中创建一个上下文 LoggedUserContext.js:

import React from 'react';


export const LoggedUserContext = React.createContext(
  );
Run Code Online (Sandbox Code Playgroud)

当然,现在我可以使用消费者访问其他组件中的所述上下文,就像我在这里所做的那样:

  <LoggedUserContext.Consumer>
       {user => (
       (LoggedUserContext.name) ? LoggedUserContext.name : 'Choose a user or create one';
       )}
   </LoggedUserContext.Consumer>
Run Code Online (Sandbox Code Playgroud)

但显然,为了使这个系统有用,我需要在登录后修改我的上下文,这样它就可以保存用户的数据.我正在使用axios调用REST API,我需要将检索到的数据分配给我的上下文:

axios.get(`${SERVER_URL}/users/${this.state.id}`).then(response => { /*What should I do here?*/});
Run Code Online (Sandbox Code Playgroud)

我认为在React的文档中没有办法做到这一点,但他们甚至提到保存登录用户的信息是他们为上下文考虑的用例之一:

Context旨在共享可被视为React组件树的"全局"数据,例如当前经过身份验证的用户,主题或首选语言.例如,在下面的代码中,我们手动穿过"主题"道具来设置Button组件的样式:

那我该怎么办呢?

javascript authentication reactjs react-context

8
推荐指数
2
解决办法
1万
查看次数

有没有办法在我的Android应用程序中插入新的360 YouTube视频?

我到处都看,但它在任何地方都没有任何提及.我可以将它们重现为任何其他视频,但不会像youtube应用中那样看到360控件.

youtube android android-youtube-api

6
推荐指数
0
解决办法
412
查看次数

Git 是否会在克隆上带来未提交的更改?

我在使用 Git 时遇到了问题,根据我对 Git 工作原理的了解,这个问题永远不会发生。

我正在尝试clone从 Bitbucket 在一个干净的目录中创建一个存储库。克隆后,项目显示对存储库的未提交更改 -git status显示几个修改过的文件。这些更改对应于当前仍在等待修订并由另一位开发人员在所述存储库中取消合并的拉取请求。

我从中克隆的 URL 没有任何内容表明它指向任何特定的提交或拉取请求,并且存储库 HEAD 在 master 中。此外,使用rm -rf或什至切换到完全不同的目录删除目录,然后再次克隆会重现该问题。但是,我的同事无法在他们的本地机器上重现该问题。

所有通常的措施,比如git reset --hard或隐藏更改,都会让我回到克隆时的存储库,包括我提到的未提交的更改

什么可能导致这种奇怪的行为?

git bitbucket

6
推荐指数
1
解决办法
99
查看次数

Class不会使用unity的JSONUtility序列化为JSON

我有以下类,它是可序列化的,只有字符串作为字段:

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

[System.Serializable]
public class Cabeza
{

    string id, urlOBJ, urlTextura, pathOBJbajado, pathTexturaBajada;

    public string Id { get; set; }
    public string UrlOBJ { get; set; }
    public string UrlTextura { get; set; }
    public string PathOBJbajado { get; set; }
    public string PathTexturaBajada { get; set; }


    public Cabeza (string nuevoId)
    {
        Id = nuevoId;
        UrlOBJ =  nuevoId +".obj";
        UrlTextura =  nuevoId + ".png";

    }


}
Run Code Online (Sandbox Code Playgroud)

到目前为止,我知道应该可以从中获取JSON ...但是,JsonUtility.ToJson()只返回{ }.这怎么可能?我错过了什么?

c# json unity-game-engine unity5

2
推荐指数
1
解决办法
2378
查看次数

无法从其他应用访问customProvider.它说它缺少已有的权限

我正在尝试使用自定义内容提供程序创建一个从另一个应用程序访问SQLite表的应用程序.我收到以下错误:

java.lang.SecurityException: Permission Denial: reading com.example.carlos.gymlog.MiContentProvider uri content://mi.uri.porquesi/sesiones from pid=2375, uid=10064 requires android.permission.permRead, or grantUriPermission()
Run Code Online (Sandbox Code Playgroud)

但是,我的"发件人"应用程序(具有数据库的应用程序)已具有所需的权限:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.carlos.gymlog" >

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/MiTema" >
        <activity
            android:name=".Principal"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <provider android:name="MiContentProvider"
            android:authorities="mi.uri.porquesi"
            android:readPermission="android.permission.permRead"
            android:exported="true"
            android:grantUriPermissions="true"> </provider>

    </application>

</manifest>
Run Code Online (Sandbox Code Playgroud)

这是导致"receiver"应用程序(尝试访问另一个)的错误的代码:

ArrayList<Sesion> sacarDatos(Context c){

        Uri cUri = Uri.parse("content://mi.uri.porquesi/sesiones");
        ContentProviderClient miCP = c.getContentResolver().acquireContentProviderClient(cUri);

        ArrayList<Sesion> sesiones = null;
        try {
            Cursor cur  = miCP.query(cUri, null, null, null, null);
            sesiones = new …
Run Code Online (Sandbox Code Playgroud)

sqlite android android-contentprovider

1
推荐指数
1
解决办法
762
查看次数