Как я могу сделать условия в этой строке шаблона? - PullRequest
0 голосов
/ 20 февраля 2020

В настоящее время у меня есть этот объект:

const messages = {
  required: field => `${field} needs to be filled!`,
}

Это печатает меня:

nome needs to be filled

Я пытаюсь создать условие в этой строке шаблона, чтобы изменить значение поля основанный в условии. Я пробовал что-то вроде:

const messages = {
  required: field => `
   ${field => {
    if(field === 'nome') {
     'name'
    }
    if(field === 'endereco') {
     'address'
    }
   }} needs to be filled!
  `,
}

Но когда я распечатываю полученное сообщение:

field => {if (field === 'nome') {return 'name'}} необходимо заполнить!

И мне нужно:

name needs to be filled

Ответы [ 3 ]

1 голос
/ 20 февраля 2020

Я считаю, что вы можете иметь только выражения внутри литералов шаблона, но не операторы (что вы и пытаетесь сделать, используя if - это оператор). Вы можете использовать троичный для создания выражения:

const messages = {
  required: field => `${field === 'nome' ? 'name' : field} needs to be filled!`,
};

Если у вас есть более одного условного выражения, вам придется разбить свои условные выражения и выпустить sh из функции стрелки немного больше :

const messages = {
  required: field => {
    let display;

    if (field === 'nome') {
      display = 'name';
    } else if (field === 'other condition) {
      display = 'other thing';
    } else {
      display = field;
    }

    return `${display} needs to be filled`;
  },
};
1 голос
/ 20 февраля 2020
const messages = {
  required: field => `${field === "nome" ? "name" : field} needs to be filled!`,
}

Внутри литералов шаблона вы не можете делать многострочные выражения, например функции, но вы можете использовать троичный оператор.

1 голос
/ 20 февраля 2020

Ты слишком усложняешь

const field = "nome";
const messages = {
  required: `${field === 'nome'?'name': field} needs to be filled!`
}
console.log(messages.required)

const messages1 = {
  required: field => `${field === 'nome' ? 'name' : field} needs to be filled!`
}
console.log(messages1.required("nome"))
...