Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.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/Flux:从组件的渲染方法触发动作,还是从组件执行Rest调用?_Javascript_Reactjs_Redux_Flux - Fatal编程技术网

Javascript React/Flux:从组件的渲染方法触发动作,还是从组件执行Rest调用?

Javascript React/Flux:从组件的渲染方法触发动作,还是从组件执行Rest调用?,javascript,reactjs,redux,flux,Javascript,Reactjs,Redux,Flux,我的组件上有一个按钮,它将导出对象的json,以便用户可以下载它?要获取JSON,我必须进行REST调用以获取JSON,然后我正在这样做 var definitionJson = JSON.stringify(definition); var definitionName = definition.name var exportedFileName = definitionName.concat(".json"); var file = new Blob([def

我的组件上有一个按钮,它将导出对象的json,以便用户可以下载它?要获取JSON,我必须进行REST调用以获取JSON,然后我正在这样做

    var definitionJson = JSON.stringify(definition);
    var definitionName = definition.name
    var exportedFileName = definitionName.concat(".json");
    var file = new Blob([definitionJson], { type: 'application/json' });

    //needed for IE10
    if (window.navigator && window.navigator.msSaveBlob) {
        window.navigator.msSaveBlob(file, exportedFileName);
    }
    else {
        var a = document.createElement("a");
        a.href = URL.createObjectURL(file);
        a.setAttribute("download", exportedFileName);
        a.click();
    }
我有一些问题:-

  • 我应该如何适应这个变化?我是否应该启动一个action creator,它将下载json,然后更新某个存储,FileDownload组件将监听该存储。该组件将触发上述代码,但随后它必须在其render方法中触发一个操作,以将存储设置为value为empty
  • 从组件的渲染方法触发动作是否正确
  • 由于这不会从我的应用程序中传输任何数据,我是否应该使用React组件获取此JSON并弹出以供下载?这将使组件执行REST调用
  • 不是3,而是触发一个action creator,它将获取JSON并弹出供下载?在本例中,我将在action creator中编写上述代码

  • 首先,为什么不直接从API服务器触发下载

    回答您的问题:

  • 我应该如何适应这个变化?我是否应该启动一个action creator,它将下载json,然后更新一个 文件下载组件将侦听。该组件将触发 但它必须在其render方法中激发一个动作来 是否将存储设置为空
  • 如果该组件的唯一目的是触发下载,那么您可能不需要该组件。如果下面的选项不可用,我可能会在action creator回调中处理这个问题

  • 从组件的渲染方法触发动作是否正确
  • 不可以。通常建议您使用
    componentWillMount
    进行大多数会影响组件渲染的操作

  • 由于这不会从我的应用程序中传输任何数据,我是否应该使用React组件获取此JSON并弹出以供下载 ? 这将使组件执行REST调用
  • 我假设这是指触发从API服务器下载?如果是这样,我会使用这种方法。用户界面不需要关心如何格式化下载文件

  • 不是3,而是触发一个action creator,它将获取JSON并弹出供下载?在本例中,我将编写上述代码 在动作创建者内部

  • 如果选项3可用,那么我认为这样做没有任何好处。只需选择最简单、功能最差的解决方案。

    首先,为什么不直接从API服务器触发下载

    回答您的问题:

  • 我应该如何适应这个变化?我是否应该启动一个action creator,它将下载json,然后更新一个 文件下载组件将侦听。该组件将触发 但它必须在其render方法中激发一个动作来 是否将存储设置为空
  • 如果该组件的唯一目的是触发下载,那么您可能不需要该组件。如果下面的选项不可用,我可能会在action creator回调中处理这个问题

  • 从组件的渲染方法触发动作是否正确
  • 不可以。通常建议您使用
    componentWillMount
    进行大多数会影响组件渲染的操作

  • 由于这不会从我的应用程序中传输任何数据,我是否应该使用React组件获取此JSON并弹出以供下载 ? 这将使组件执行REST调用
  • 我假设这是指触发从API服务器下载?如果是这样,我会使用这种方法。用户界面不需要关心如何格式化下载文件

  • 不是3,而是触发一个action creator,它将获取JSON并弹出供下载?在本例中,我将编写上述代码 在动作创建者内部

  • 如果选项3可用,那么我认为这样做没有任何好处。只需选择最简单、功能最差的解决方案。

    @WiktorStribiż。再次感谢早些时候的邀请help@WiktorStribiż你来了。再次感谢您早些时候的帮助