小编lan*_*nan的帖子

如何使用Redux刷新JWT令牌?

我们的React Native Redux应用程序使用JWT令牌进行身份验证.有许多动作需要这样的令牌,并且很多动作同时被派遣,例如当app加载时.

例如

componentDidMount() {
    dispath(loadProfile());
    dispatch(loadAssets());
    ...
}
Run Code Online (Sandbox Code Playgroud)

双方loadProfileloadAssets要求JWT.我们将令牌保存在状态和AsyncStorage.我的问题是如何处理令牌过期.

最初我打算使用中间件来处理令牌过期

// jwt-middleware.js

export function refreshJWTToken({ dispatch, getState }) {

  return (next) => (action) => {
    if (isExpired(getState().auth.token)) {
      return dispatch(refreshToken())
          .then(() => next(action))
          .catch(e => console.log('error refreshing token', e));
    }
    return next(action);
};
Run Code Online (Sandbox Code Playgroud)

}

我遇到的问题是令牌loadProfileloadAssets动作都会刷新令牌,因为在派遣令牌时,令牌将过期.理想情况下,我想"暂停"需要身份验证的操作,直到刷新令牌.有没有办法用中间件做到这一点?

javascript jwt reactjs react-native redux

43
推荐指数
3
解决办法
2万
查看次数

jQuery附加到AJAX加载的SVG问题

我通过AJAX从外部文件成功加载了一些svg:

$("#svg").load(svgUrl + " svg", function() {  
    // do stuff  
});  
Run Code Online (Sandbox Code Playgroud)

我的HTML看起来像这样:

<div id="svg" ...>
    <svg ...>
        ...
    </svg>
</div>
Run Code Online (Sandbox Code Playgroud)

我可以看到图形很好.现在我想在加载的svg中添加一些额外的svg元素.我将脚本更改为:

$("#svg").load(svgUrl + " svg", function() {  
    $("svg").append("<g id='compass'></g>");  
    // do stuff  
});  
Run Code Online (Sandbox Code Playgroud)

由于某些原因,添加的元素在firebug中显示为隐藏,无论我放入哪个xml,我都无法在我的网页上看到它.

更新:
感谢echo-flow我能够附加到我的SVG.现在,如果我尝试从另一个xml文件加载我的指南针svg,它就不会出现在我的DOM中.目前我的代码如下:

$("#svg").load(obj.svgUrl + " svg", function() {
    var svgns = "http://www.w3.org/2000/svg";
    var g = document.createElementNS(svgns,"g");
    g.setAttributeNS(null,'id','compass');
    $("svg").append(g);
    $("#compass").load("files/svg/compass.xml");
});
Run Code Online (Sandbox Code Playgroud)

如果我在firebug中查看控制台,我看到指南针标记的AJAX请求结果是成功但是为空.

jquery svg dom load append

7
推荐指数
1
解决办法
1万
查看次数

在React中为函数prop提供默认值

处理可选React.PropType.func属性的最佳方法是什么?

我应该为它提供默认的noop(如果是这样,最好的方法是什么)或者我应该检查是否定义了道具?

propTypes: {
    onClick: React.PropTypes.func
},

someMethod: function() {
    if (this.props.onClick) {
       this.props.onClick();
    }
}
Run Code Online (Sandbox Code Playgroud)

reactjs

7
推荐指数
2
解决办法
6299
查看次数

如何在backbone.marionette中使用EJS模板?

到目前为止,我一直在我的Rails/Backbone.js应用程序中使用EJS模板.我真的想开始使用backbone.marionette.我该怎么做才能使它与EJS一起使用?

MyView = Backbone.Marionette.ItemView.extend({
  template: "#some-template"
});
Run Code Online (Sandbox Code Playgroud)

它在文档中说我需要为template属性提供jQuery选择器,但我不认为我的EJS模板有一个.

更新:

这就是我如何使用模板正常渲染我的视图:

TasksTree.Views.TaskItem = Backbone.View.extend({
...
  render: function() {
    ...
    this.$el.html(JST['tasks_tree/item'](options));
    return this;
  }

})
Run Code Online (Sandbox Code Playgroud)

我有模板文件夹,item.jst.ejs文件看起来像这样:

<li>
  <label><%= taskTitle %></label>
</li>
Run Code Online (Sandbox Code Playgroud)

我的模板文件夹包含在中 application.js

templates ejs backbone.js marionette

4
推荐指数
1
解决办法
4773
查看次数

如何用PHP缩小XML?

我有一个PHP脚本,它读取XML文件并使用SimpleXML修改它.完成所有修改后,脚本保存文件(大小~2.8 mb).
我需要使用jQuery加载这个XML文件,这需要相当长的时间.有没有办法压缩/缩小我的XML文件,以减少我的AJAX调用中的加载时间.

更新:

XML文件包含网页的SVG(大代谢图),因此它必须保留XML节点的所有内容.

php xml performance filesize minify

3
推荐指数
1
解决办法
2880
查看次数

如何防止jQuery UI手风琴开启?

我创建了一个jQuery UI手风琴,其标题中包含一些额外的超链接.现在当我点击标题中的一个超链接时,手风琴打开了.我怎么能防止这种情况?我只希望手风琴在用户点击标题中的任何空格时打开,除了我添加的超链接.

jquery-ui jquery-ui-accordion

2
推荐指数
1
解决办法
1832
查看次数