javascript - html输入框的“value”属性内的if语句
问题描述
我在<input>
下面有一个当前可以使用的框。我想知道我是否能够在物业 if
内放置一份声明。value
<input
type="text"
name="name"
id="name"
value={stockName.toUpperCase()}
onChange={event => {
// Check that no numbers have been added
const { value } = event.target;
if (/[^a-z]/gi.test(value)) { // Check that only letters are in the search
setError("Symbols should only contain letters!");
} else {
setError(null);
let uppercaseValue = value.toUpperCase(); // Make sure its uppercase
setStockName(uppercaseValue);
}
}}/>
例如,我想在value
属性中做这样的事情。
value={event => {
if (symbolSearchBool){ // If true
return symbolSearch // Set value to this, but still allow user to change it if needed
}
else {
return stockName.toUpperCase() // Set value to whatever user types in
}
}}
有没有办法做到这一点?
我正在使用 useState
const [stockName, setStockName] = useState(); // Hold user input for stock Symbol
const [error, setError] = useState(null); // Hold error state based on poor user input
解决方案
您的建议可以使用ternary-operator。
您的示例不起作用的原因是您正在声明一个函数。通常,React 组件的value
属性不会尝试被调用(作为函数),而是期望是值本身。
这并不是说它不能。这只是违反惯例,您应该期望第三方组件不会尝试调用您的value
属性。
解决方案
<input
type="text"
name="name"
id="name"
value={symbolSearchBool ? symbolSearch : stockName.toUpperCase()}
onChange={event => { ... }}
/>
注意这里使用了三元运算符,语法如下:
condition ? exprIfTrue : exprIfFalse
您可以阅读如下:
if (condition) {
return exprIfTrue;
} else {
return exprIfFalse;
}
推荐阅读
- android - 如何通过单击按钮根据微调器中选择的项目更改 URL?安卓
- python - 使用 Pandas 加载和读取 Excel 数据
- php - PHP执行两次的问题
- sql - 在sql中使用过滤器计算中位数
- sql - SQL 部分重复
- java - 创建 POST 请求,使用 Java RestAssured,返回状态码 422
- python - 处理字节三倍python
- python - manage.py 的问题:没有名为“django”的模块
- amazon-web-services - Terraform 循环查询
- excel - IF() 函数不适用于使用 VLOOKUP() 获取的数字