Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用setState赋值时出现的问题_Javascript_Reactjs_Object_React Hooks_Use State - Fatal编程技术网

Javascript 使用setState赋值时出现的问题

Javascript 使用setState赋值时出现的问题,javascript,reactjs,object,react-hooks,use-state,Javascript,Reactjs,Object,React Hooks,Use State,使用React是新手,在尝试更改文本字段以更新状态时遇到一些问题。使用初始状态设置为useState的功能组件 我肯定我只是错过了一些简单的事情。。。但最终还是放弃了,寻求帮助 以下是功能组件的完整代码: import React, { useState } from 'react'; import Step1 from '../Element/FormStep1'; const NewForm = () => { let [object, setObject] = useStat

使用React是新手,在尝试更改文本字段以更新状态时遇到一些问题。使用初始状态设置为useState的功能组件

我肯定我只是错过了一些简单的事情。。。但最终还是放弃了,寻求帮助

以下是功能组件的完整代码:

import React, { useState } from 'react';
import Step1 from '../Element/FormStep1';

const NewForm = () => {

  let [object, setObject] = useState({
    property: {
      entry: 'string'
    }
  });

  function handleChange(event) {
    const {name, value} = event.target;
    setObject({
      ...object,
      [name]: value
    })
    console.log(object)
  };

  return (      
    <form>     
        <Step1 
          handleChange={handleChange}
          object={object}
        />                        
    </form>
  );
}

export default NewForm
目的是用文本输入替换值“string”

 object {
   property: {
     entry: 'value' //Text input 
   }
 }

如果希望对象具有value属性,则应添加
{}

你应该改变

setObject({
  ...object,
  [name]: value
})


所以,我在睡了一段时间后,通过更多的在线研究,终于找到了答案。使用lodash的set方法是可行的。因此,需要对my Textfield上的name属性进行细微更改:

<TextField
  name='property.value'
  type='text'
  onChange={props.handleChange}
/>
这项工作现在正按预期进行(几个小时后的挫折感)

注意。。。下面是我找到答案的地方:


您的对象将在下一次渲染中更改

function handleChange(event) {
    const {name, value} = event.target;
    const newObject = {
      ...object,
      [name]: value
    } 
    setObject(newObject)
    console.log('newObject', newObject)
    console.log('currentObject', object)
  };

新建对象!=对象

对象来自哪里?设置对象做什么?请提供完整的代码。否则无法回答。@errorQD请添加useState行从您的问题中,我无法理解什么是错误的,应该是怎样的,您是否可以添加所需的行为以及它是如何错误的。(显示对象在正常工作时的状态)
setObject({
  ...object,
  [name]: { value } // added { }
})
<TextField
  name='property.value'
  type='text'
  onChange={props.handleChange}
/>
function handleChange(event) {
  const {name, value} = event.target;
  set(object, name, value)
  console.log(object) // to see that it worked in the console. 
}
function handleChange(event) {
    const {name, value} = event.target;
    const newObject = {
      ...object,
      [name]: value
    } 
    setObject(newObject)
    console.log('newObject', newObject)
    console.log('currentObject', object)
  };