7

Ho ricevuto un errore prefer-template da eslint. Per la soluzione, ho cambiato il mio codice per utilizzare una stringa di modello all'interno della funzione require che è nidificato all'interno della funzione url come segue:Come nidificare stringhe di modelli in ES6?

{ 
    background: `url(${require(`../../assets/${edge.node.name.toLowerCase()}.png` center no-repeat`)}) 
} 

Tuttavia, che ha dato un errore, ovviamente. Ecco il codice che stavo usando in precedenza, un segno più che concatena all'interno della funzione require invece della stringa del modello.

{ 
    background: `url(${require('../../assets/' + edge.node.name.toLowerCase() + '.png')}) center no-repeat` 
} 

Sarebbe possibile definire stringhe di template annidate?

risposta

12

Sì, è possibile, ma si doveva per qualche motivo mettere la parte )}) (che chiude la require chiamata, il valore interpolato, e il CSS url) nel posto sbagliato:

{ 
    background: `url(${require(`../../assets/${edge.node.name.toLowerCase()}.png`)}) center no-repeat` 
//                    ^^^ 
} 

Detto questo, è probabilmente una cattiva idea in quanto non rende esattamente il codice leggibile. Meglio usare una variabile:

const bgurl = require(`../../assets/${edge.node.name.toLowerCase()}.png`); 
… { 
    background: `url(${bgurl}) center no-repeat` 
} 
+0

Grazie per la risposta. Questo è stato il mio errore per la demo. Tuttavia, quando l'ho cambiato in 'url ($ {require (' ../../ assets/$ {edge.node.name.toLowerCase()}. Png')) center no-repeat' Si tratta di un errore di sintassi. – lvarayut

+0

@LVarayut: [Worksforme] (http://babeljs.io/repl/#?evaluate=true&presets=es2015&code=const%20x%20%3D%20 {% 0A% 20% 20background% 3A% 20% 60url% 28 % 24 {richiedere% 28% 60% 2F .. ..% 2Fassets% 2F% 24 {edge.node.name.toLowerCase% 28% 29} .png% 60% 29% 29%} 20center% 20no-repeat% 60 % 0A}% 3B). Che errore stai ottenendo esattamente? – Bergi

+0

Grazie a @Berg. Era la mia confusione sulle parentesi graffe. A proposito, andrò con il tuo secondo approccio. – lvarayut

Problemi correlati