Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.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-Django:TypeError:无法读取属性';代币';未定义的_Javascript_Reactjs_Django Rest Framework - Fatal编程技术网

Javascript React-Django:TypeError:无法读取属性';代币';未定义的

Javascript React-Django:TypeError:无法读取属性';代币';未定义的,javascript,reactjs,django-rest-framework,Javascript,Reactjs,Django Rest Framework,我正在尝试使用react和django rest登录。 我有用于登录后端的rest auth,用户来自LDAP django上的登录有效。 当从react调用时,来自后端的响应也会起作用 我尝试使用react cookie将我的令牌保存在cookie中 但当我这样做时,我有一个错误:TypeError:无法读取未定义的属性“token” 我拆分了代码。我有一个文件api\u auth\u service.js export class APILogin { static loginUse

我正在尝试使用react和django rest登录。 我有用于登录后端的rest auth,用户来自LDAP

django上的登录有效。 当从react调用时,来自后端的响应也会起作用

我尝试使用react cookie将我的令牌保存在cookie中

但当我这样做时,我有一个错误:TypeError:无法读取未定义的属性“token”

我拆分了代码。我有一个文件api\u auth\u service.js

export class APILogin {
    static loginUser(body){
        return fetch('http://127.0.0.1:8000/rest-auth/login/', {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json'
            },
            body: JSON.stringify(body)
        }).then( resp => resp.json())
    }
}
以及我在react中的登录视图:

export default function Login() {

  const [ username, setUsername] = useState('');
  const [ password, setPassword] = useState('');

  const [token, setToken] = useCookies(['gra-token']);


  useEffect(() => {
    console.log(token);

  }, [token])

  const loginClicked = () => {
    APILogin.loginUser({username, password})
    .then( resp => console.log(resp))
    .then(resp => setToken('gra-token', resp.token))
    .catch( error => console.log(error))
  }

  return ( .............
正如你所看到的,保存在我的cookie中的显然不是令牌


您需要从first-then语句返回resp

我认为这是因为在first-then语句中,您不返回任何内容,只需执行
console.log
。我会将
setToken
移动到控制台上的同一
then
子句,或者从第一个
then
子句返回一些内容
const loginClicked = () => {
 APILogin.loginUser({username, password})
 .then( resp => resp)
 .then(resp => setToken('gra-token', resp.token))
 .catch( error => console.log(error))
}