reactjs - 如何通过反应中的另一个组件访问组件中输入标签的值
问题描述
我基本上是反应和js的新手。我想在 Input 中访问 input 的值,以便我可以在他打字时给他一个提示(例如,他键入 New 并且他将 New york 视为该输入表单的占位符)。任何帮助,将不胜感激。
请注意,我只能更改 app.js 文件
应用程序.js:
import React from 'react';
import Input from './Input.js';
import Cities from './cities.json';
function App() {
return <div>
<Input
/>
</div>
}
export default App;
输入.js:
import React from 'react';
const Input = ({handleChange, hint}) => {
return (
<div className="input">
<label htmlFor="input" data-testid="hint">
{hint}
</label>
<input
data-testid="input"
type="text"
id="input"
onChange={handleChange}
/>
</div>
);
};
export default Input;
解决方案
有很多方法可以做到这一点。最简单的方法是在您的 App 组件中设置状态以跟踪输入的值,并向输入组件传递一个handleChange
更新状态的函数:
function App() {
// set up state to keep track of the input value
const [inputValue, setInputValue] = React.useState('');
// declare a function to update the state when the input changes
const handleChange = event => setInputValue(event.target.value);
// pass the value and the change handler to the input
return <div>
<Input
value={inputValue}
handleChange={handleChange}
/>
</div>
}
通过这种设置,App 组件知道(并负责)输入的值,并可以用它做其他事情。
传递给处理程序的event
参数将包含您需要的有关通过其target
属性输入的所有信息,包括新值。
推荐阅读
- sql-server - 将 CSV 导入 SQL Server 数据库,保留 ID 列值
- html - 我怎样才能使它成为我的
元素不相互重叠? - excel - 外部 CSV 文件更新或批处理文件完成时 Excel 中的触发功能
- hashicorp-vault - Hashicorp Vault - 进行 api 调用时出现 403
- c# - 类之间的转换是否有模式
- java - 在 JPA 中获取单列值
- javascript - 很难使用节点超级代理获取 API
- asp.net-core - ASP.NET Core 修改异常头
- spring-boot - 项目处理器中的 Spring Batch 运行时异常
- r - 根据他们在 geom_bar 中的排名重新排序(闪避)