首頁  >  問答  >  主體

react.js - javascript中如何用佔位符定義restful那種url啊, angular我知道, 但是用react該用哪個庫?

我知道angular裡面的是這樣的

$resource('http://localhost:8080/web/user/:id/oper/:active',{id: '111',active: 'y'})

react裡面用啥呢, 是否有什麼包可以實現這個功能呢

曾经蜡笔没有小新曾经蜡笔没有小新2686 天前1219

全部回覆(2)我來回復

  • 学习ing

    学习ing2017-07-05 11:02:33

    我用 http://localhost:8080/web/user/{id}/oper/{active} 這樣形式的,和後台 SpringMvc 的 URL 形式一樣,字串替換的方法用下面的函數

    /**
     * 扩展了 String 类型,给其添加格式化的功能,替换字符串中 {placeholder} 或者 {0}, {1} 等模式部分为参数中传入的字符串
     * 使用方法:
     *     'I can speak {language} since I was {age}'.format({language: 'Javascript', age: 10})
     *     'I can speak {0} since I was {1}'.format('Javascript', 10)
     * 输出都为:
     *     I can speak Javascript since I was 10
     *
     * @param replacements 用来替换 placeholder 的 JSON 对象或者数组
     */
    String.prototype.format = function(replacements) {
        replacements = (typeof replacements === 'object') ? replacements : Array.prototype.slice.call(arguments, 0);
        return formatString(this, replacements);
    }
    /**
     * 替换字符串中 {placeholder} 或者 {0}, {1} 等模式部分为参数中传入的字符串
     * 使用方法:
     *     formatString('I can speak {language} since I was {age}', {language: 'Javascript', age: 10})
     *     formatString('I can speak {0} since I was {1}', 'Javascript', 10)
     * 输出都为:
     *     I can speak Javascript since I was 10
     *
     * @param str 带有 placeholder 的字符串
     * @param replacements 用来替换 placeholder 的 JSON 对象或者数组
     */
    var formatString = function (str, replacements) {
        replacements = (typeof replacements === 'object') ? replacements : Array.prototype.slice.call(arguments, 1);
        return str.replace(/\{\{|\}\}|\{(\w+)\}/g, function(m, n) {
            if (m == '{{') { return '{'; }
            if (m == '}}') { return '}'; }
            return replacements[n];
        });
    };

    回覆
    0
  • 黄舟

    黄舟2017-07-05 11:02:33

    自己寫了一個,

    /**
     * 格式化url占位符
     * eg: http://localhost:8080/yunpan/{id}/aaa/{name}
     * urlFormat(url, {id: '111', name: 'yc'})
     * => http://localhost:8080/yunpan/111/aaa/yc
     *
     * @param url
     * @param param
     * @returns {*}
     */
    export const urlFormat = (url, param) => {
        if (param === undefined || param === null || param === {}) {
            return url;
        }
    
        let keys = Object.keys(param);
        for (let key of keys) {
            url = url.replace(new RegExp("\{" + key + "\}", "g"), param[key]);
        }
        return url;
    };

    回覆
    0
  • 取消回覆