簡體   English   中英

有沒有辦法在顯示提示時在查詢器中使用以前的答案(inquirer v6)?

[英]Is there a way to use previous answers in inquirer when presenting a prompt (inquirer v6)?

所以我想做的是在進一步詢問問題時使用以前的答案。 基本上,我可以顯示將要創建的內容的摘要並要求驗證。

this.prompt([   
    {
      type: 'input',
      name: 'name',
      message: 'What is your name?'
      default: 'Jake'
    },
    {
      type: 'confirm',
      name: 'summary',
      message: 'Is this information correct? Your name is:' + answers.name',
    }

有沒有一種簡單的方法來實現這一目標? 或者另一種方法來實現列出所有先前答案的摘要類型的東西?

就我而言,丹尼爾的回答對詢問者 7 不起作用。解決方法可能是將大提示分成幾個,並使用匿名async函數將它們包裝起來。 這將永遠是安全的。

const inquirer = require("inquirer");

(async () => {
  const ans1 = await inquirer.prompt([
    {
      type: "input",
      name: "name",
      message: "What is your name?",
      default: "Jake",
    },
  ]);
  const ans2 = await inquirer.prompt([
    {
      type: "confirm",
      name: "summary",
      message: "Is this information correct? Your name is:" + ans1.name,
    },
  ]);
  return { ...ans1, ...ans2 };
})()
  .then(console.log)
  .catch(console.error);

這將記錄:

{ name: 'Foo bar', summary: true }

嵌套查詢者調用:

inquirer
  .prompt({
    type: 'list',
    name: 'chocolate',
    message: "What's your favorite chocolate?",
    choices: ['Mars', 'Oh Henry', 'Hershey']
  })
  .then(() => {
    inquirer.prompt({
      type: 'list',
      name: 'beverage',
      message: 'And your favorite beverage?',
      choices: ['Pepsi', 'Coke', '7up', 'Mountain Dew', 'Red Bull']
    });
  });

或者使用when函數。

{
  type: 'confirm',
  name: 'summary',
  message: 'Is this information correct? Your name is:' + answers.name,
  when: function( answers ) {
    // Only run if user set a name
    return !!answers.name;
  },
}

 const run = async () => { try { const ans1 = await inquirer.prompt([ {}, ]); const ans2 = await inquirer.prompt([ {}, ]); return { ...ans1, ...ans2 }; inquirer.prompt([]); } catch (err) { if (err) { switch (err.status) { case 401: console.log('401'); break; default: console.log(err); } } } }; run();

我參加聚會有點晚了,但是在尋找解決方案時遇到了這個問題。 完整地說,在第 7 版中,可以將一個函數傳遞給 message 屬性,從而得到如下答案:

inquirer
  .prompt([
    {
      type: "input",
      name: "name",
      message: "What is your name?",
    },
    {
      type: "list",
      name: "food",
      message: (answers) => `What would you like to eat ${answers.name}?`,
      choices: ["Hotdogs", "Pizza"],
    },
  ])
  .then((answers) =>
    console.log(`Enjoy your ${answers.food}, ${answers.name}!`)
  );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM