javascript - react : how to pass in URLs for REST APIs

标签 javascript django reactjs ecmascript-6 webpack

开始学习react,在网上找不到这个问题的答案。也许我不知道该使用什么术语。

我的后端是 django,我希望能够将 REST API 的 URL 传递到我的 React 前端。
我不想在 React 中对它们进行硬编码,因为它们已经在 django 中定义了。
对我来说,我想在 html 模板上呈现一个脚本标记,其中包含一个包含 URL 值的对象,这是有意义的。

例如django 模板会有类似的内容

<script type="text/javascript">
  var CONFIG = {
    some_url : '{% url "my-api" %}'
  }
</script>

(对于那些不熟悉 django 的人,该 {% url %} 标记会呈现类似/path/to/myapi 的 url)

然后在我的 React Stores/Actions 中我只引用 CONFIG.some_url。

这是正确的方法吗?或者有没有更好的方法让我的 react 组件可以使用这些信息。

------------编辑-----------------

使用 webpack 转译 jsx 文件并使用 django-webpack-loader整合一切。这意味着 django 模板在 jsx 加载到顶部之前已完全渲染。
因此,模板标签无法在 jsx 文件内运行。

最佳答案

即使你正在使用 django-webpack-loader(我也是),你仍然可以将 props 传递给你的 React 应用程序。您可以像这样继续:

1) 解析 view.py 中的绝对后端 url:

def get_context_data(self, **kwargs):
    context['APIROOT_URL'] = reverse('api-root', request=self.request)
    return context

2) 将 context 属性传递给 html 模板

    <div id="react-app"></div>

<script>
    window.__APIROOT_URL__= '{{ APIROOT_URL }}';
    window.react_mount = document.getElementById('react-app');
</script>
{% render_bundle 'main' %}

3)最后在您的应用程序中,获取如下属性:

const apirootUrl = window.__APIROOT_URL__

关于javascript - react : how to pass in URLs for REST APIs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39265648/

相关文章:

django - form.cleaned_data 返回空集

javascript - 为什么我在 Ionic-React 上的事件不起作用?

javascript - 如何在react-navigation中向stackNavigator中的所有屏幕添加通用背景图像?

javascript - 按多个值对 ul 进行排序

javascript - "var self = module.exports;"是什么意思?

javascript - 如何在 Mongodb 中对多个数组使用聚合映射和过滤器

javascript - 当我拖动连接到 Web Audio API 增益节点的 slider 时,它会弹出并单击。拖动时音量没有平滑变化

ios - 使用 IOS 调用 Django REST Framework API

python - 多用户和 Django

reactjs - 动画 CSSTransition react