我正在使用带有 React.js 的 Django Rest 框架。我的页面使用这样的 api 显示一个用户的个人资料:
http://localhost:8000/api/profile/[pk]
我想动态设置 react ajax 请求的 url 以包含正确的 pk,以便它从服务器请求正确的用户信息。
我可以使用像 window.location.href 这样的函数并从末尾弹出数字,但是有没有办法通过直接从服务器传递 pk 来做到这一点,即使用模板变量?
我正在使用带有 React.js 的 Django Rest 框架。我的页面使用这样的 api 显示一个用户的个人资料:
http://localhost:8000/api/profile/[pk]
我想动态设置 react ajax 请求的 url 以包含正确的 pk,以便它从服务器请求正确的用户信息。
我可以使用像 window.location.href 这样的函数并从末尾弹出数字,但是有没有办法通过直接从服务器传递 pk 来做到这一点,即使用模板变量?
当您渲染组件时,您应该将 pk 作为props传递。
<script>
React.render(React.createElement(Profile, {
userId: "{{ userId }}",
urlPrefix: "/api/profile/"
}), element);
</script>
更好的选择可能是只获取用户,然后渲染组件。例如,使用超级代理:
superagent.get('/api/profile/{{ userId }}', function(res){
React.render(React.createElement(Profile,
{user: res.body}
), element);
});
使用 browserify,您可以在脚本标签中包含数据,并在您的代码中使用它:
<script>var _appData = {userId: "{{ userId }}"};</script>
或者使用-r
标志(.require()
在 api 中)导出module。
# sh
browserify -r react -r src/profile.js:profile.js
// js
b.require('react').require('src/profile.js', {expose: 'profile.js'});
然后使用常规脚本标签中的module
<script>
var React = require('react');
var Profile = require('profile.js');
React.render(React.createElement(Profile, {
userId: "{{ userId }}",
urlPrefix: "/api/profile/"
}), element);
</script>