Javascript 如何在React JS中通过用户输入输入文本
我试图让用户为我的TODO应用程序输入数据,而不是从预定义的数组中提取数据 下面是我的父组件Javascript 如何在React JS中通过用户输入输入文本,javascript,reactjs,Javascript,Reactjs,我试图让用户为我的TODO应用程序输入数据,而不是从预定义的数组中提取数据 下面是我的父组件 import React from "react" import TodoItem from "./TodoItem" import todosData from "./todosData" class App extends React.Component { constructor() { super() this.state = {
import React from "react"
import TodoItem from "./TodoItem"
import todosData from "./todosData"
class App extends React.Component {
constructor() {
super()
this.state = {
name: "",
todos: todosData
}
this.handleChange = this.handleChange.bind(this)
this.nameEnter = this.nameEnter.bind(this)
}
handleChange(id) {
this.setState(prevState => {
const updatedTodos = prevState.todos.map(item => {
if (item.id === id){
return {
...item,
completed: !item.completed
}
}
return item
})
return {
todos: updatedTodos
}
})
}
nameEnter(){
var name = this.name
console.log(name)
}
render() {
const todoItems = this.state.todos.map(item => <TodoItem key={item.id} item={item}
handleChange = {this.handleChange} nameEnter= {this.nameEnter}/>)
return (
<div className="todo-list">
{todoItems}
</div>
)
}
}
export default App
从“React”导入React
从“/TodoItem”导入TodoItem
从“/todosData”导入todosData
类应用程序扩展了React.Component{
构造函数(){
超级()
此.state={
姓名:“,
todos:todosData
}
this.handleChange=this.handleChange.bind(this)
this.namenter=this.namenter.bind(this)
}
手柄更换(id){
this.setState(prevState=>{
const updatedTodos=prevState.todos.map(项=>{
如果(item.id==id){
返回{
…项目,
已完成:!item.completed
}
}
退货项目
})
返回{
待办事项:更新的待办事项
}
})
}
namenter(){
var name=this.name
console.log(名称)
}
render(){
const todoItems=this.state.todos.map(item=>)
返回(
{todoItems}
)
}
}
导出默认应用程序
这是我添加了输入字段的子组件
import React from "react"
function TodoItem(props) {
return (
<div className="todo-item">
<input
type = "checkbox"
checked = {props.item.completed}
onChange = { () => props.handleChange(props.item.id) }
/>
<input type = "text" name= "name" />
<p>{props.item.text}</p>
</div>
)
}
export default TodoItem
从“React”导入React
功能待办事项(道具){
返回(
props.handleChange(props.item.id)}
/>
{props.item.text}
)
}
将默认值导出到doItem
这就是我的页面的外观。我希望用户输入文本,而不是预定义的文本示例:“杂货店购物”
,它应该代替文本
从“React”导入React
类形式扩展了React.Component{
构造函数(){
超级()
此.state={
姓名:“
}
}
onChange=(e)=>{
这是我的国家({
[e.target.name]:e.target.value
})
}
render(){
const{name}=this.state
返回(
)
}
}
导出默认表单
changeInputVal(ev,索引){
ev.persist();
const newArr=this.state.inputArrVal;
newArr[指数]=ev.target.value;
this.setState({inputArrVal:newArr,currentPage:1});
}
好的,就在这里
<input onChange={(e)=>handleChange(e)}/>
//react hooks
const [values,setValues] = useState({inputValue: 'predefined'});
handleChange = (e)=>{
setValues({...values,[e.target.name]: e.target.value})
}
//classes
handleChange = (e)=>{
this.setState({[e.target.name]:e.target.value});
}
handleChange(e)}/>
//反应钩
const[values,setValues]=useState({inputValue:'prefined'});
handleChange=(e)=>{
setValues({…values,[e.target.name]:e.target.value})
}
//班级
handleChange=(e)=>{
this.setState({[e.target.name]:e.target.value});
}
这是通用的,可以应用于多个输入,而不仅仅是一个使用状态更新文本并订阅该更改。我已经更新了代码。请看一看。您应该在输入中使用
onChange={(事件)=>props.handleChange(事件,id)}
。这样,您的handleChange
函数将通过event.target.value
接收包含值的event
对象,并通过第二个参数接收id
。您可以传递onChange={(event)=>props.handleChange(event,props.item.id)}并使用handleChange=(event,id)=>{console.log(event.target.checked)}
<input onChange={(e)=>handleChange(e)}/>
//react hooks
const [values,setValues] = useState({inputValue: 'predefined'});
handleChange = (e)=>{
setValues({...values,[e.target.name]: e.target.value})
}
//classes
handleChange = (e)=>{
this.setState({[e.target.name]:e.target.value});
}