[英]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.