Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.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 通过承诺使用redux最佳实践_Javascript_Reactjs_Ecmascript 6_Redux - Fatal编程技术网

Javascript 通过承诺使用redux最佳实践

Javascript 通过承诺使用redux最佳实践,javascript,reactjs,ecmascript-6,redux,Javascript,Reactjs,Ecmascript 6,Redux,我对上面的代码没有什么疑问 我可以使用export()=>{}而不是在这里编写word函数吗?只是为了保持清洁 调度是一个全局变量?我没有看到文件中的某个地方导入或需要它 这里是否需要指定标题?我在每个api调用中都看到了这一点 为什么这个承诺电话里没有陷阱?总的来说,代码是坏的 除非它是导出默认值。因为以后你需要按名称导入它 否,dispatch是传递给函数的参数: (调度)=>{} 完全取决于您的应用程序、服务器、请求等 您可以添加.catch((e)=>{})您自己,或者对一般错误使用一些

我对上面的代码没有什么疑问

  • 我可以使用export()=>{}而不是在这里编写word函数吗?只是为了保持清洁

  • 调度是一个全局变量?我没有看到文件中的某个地方导入或需要它

  • 这里是否需要指定标题?我在每个api调用中都看到了这一点

  • 为什么这个承诺电话里没有陷阱?总的来说,代码是坏的

  • 除非它是导出默认值。因为以后你需要按名称导入它

  • 否,dispatch是传递给函数的参数:

    (调度)=>{}

  • 完全取决于您的应用程序、服务器、请求等

  • 您可以添加.catch((e)=>{})您自己,或者对一般错误使用一些拦截器,从那里执行dipatch并添加一个reducer来处理这些操作。您可以在此处阅读更多内容:

  • 不,你可以,但是你需要一个名字来在你的组件中使用它
  • 否,
    dispatch
    是arrow函数的一个参数,您还可以定义
    getState
    来访问当前的redux状态。顺便说一下,如果你想的话,你完全可以指定新的名字
  • 这取决于您的服务器,但一般来说,如果您使用的是JSON API,则需要发送该标头
  • 是的,总的来说,代码看起来不太好,我建议使用中间件来处理获取请求,您的操作应该只发送配置,例如
    url
    主体
    方法
    ,等等。。。您的中间件应该处理添加公共头(例如内容类型)
  • 您可以进行如下操作:

    export function postRegister(credentials) {
        console.log(credentials);
    
        return dispatch => {
            return fetch('/user/register', {
                method: 'post',
    
                body: JSON.stringify(credentials),
    
                headers: {
                    'Content-Type': 'application/json'
                }
            })
                .then(response => response.json())
        }
    }
    
    就这么简单,那么您的中间件应该根据服务器响应来获取和分派操作类型

    如果您想更多地了解中间件应该如何处理获取请求和分派操作,请务必查看我在这里的帖子:

    看起来像个问题
    export function postRegister(credentials) {
      return {
        types: [REGISTER, REGISTER_SUCCESS, REGISTER_FAIL],
        promise: {
          url: '/user/register',
          data: credentials,
        },
      };
    }