Reactでの変数と文字列の連結


155

Reactの波括弧表記とhrefタグを組み込む方法はありますか?状態に次の値があるとします。

{this.state.id}

タグの次のHTML属性:

href="#demo1"
id="demo1"

idHTML属性に状態を追加して、次のようなものを取得する方法はありますか。

href={"#demo + {this.state.id}"}

どちらが得られます:

#demo1

回答:


320

あなたはほとんど正しいですが、いくつかの引用符を間違って配置しました。全体を通常の引用符で囲むと、文字列として文字列が得られます#demo + {this.state.id}。変数と文字列リテラルのどちらであるかを示す必要があります。内部{}はすべてインラインJSX 式なので、次のことができます。

href={"#demo" + this.state.id}

これは文字列リテラルを使用し、#demoそれをの値に連結しますthis.state.id。これは、すべての文字列に適用できます。このことを考慮:

var text = "world";

この:

{"Hello " + text + " Andrew"}

これにより、次の結果が得られます。

Hello world Andrew 

ES6文字列補間/ テンプレートリテラルを `(バッククォート)と${expr}(補間式)で使用することもできます。

href={`#demo${this.state.id}`}

これは基本的にの値を置き換えてthis.state.id連結し#demoます。これは、次を実行することと同じです"#demo" + this.state.id


最初の実装、eslintは2番目の実装を提案し、文字列リテラルテンプレートを使用しました。eslint.org/docs/rules/prefer-template
w00ngy

@ w00ngyはい、そうするべきです。ES2015(テンプレートを導入)は、広く採用され始めたばかりです。今日では、テンプレートリテラルが主流です。
Andrew Li


0

exampleData =

        const json1 = [
            {id: 1, test: 1},
            {id: 2, test: 2},
            {id: 3, test: 3},
            {id: 4, test: 4},
            {id: 5, test: 5}
        ];

        const json2 = [
            {id: 3, test: 6},
            {id: 4, test: 7},
            {id: 5, test: 8},
            {id: 6, test: 9},
            {id: 7, test: 10}
        ];

example1 =


        const finalData1 = json1.concat(json2).reduce(function (index, obj) {
            index[obj.id] = Object.assign({}, obj, index[obj.id]);
            return index;
        }, []).filter(function (res, obj) {
            return obj;
        });

example2 =

        let hashData = new Map();

        json1.concat(json2).forEach(function (obj) {
            hashData.set(obj.id, Object.assign(hashData.get(obj.id) || {}, obj))
        });

        const finalData2 = Array.from(hashData.values());

2番目の例をお勧めします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.