我将一个值从一个input标签传递到另一个input标签,它们位于不同的独立部分。传递值之后,我无法编辑我传递值的输入。下面是错误:
您为表单字段提供了一个value
属性,而没有onChange
处理程序。这将呈现一个只读字段。如果字段应该是可变的,则使用defaultValue
。否则,设置onChange
或readOnly
。
我得到了值,但我不能编辑输入!
代码如下:
App.js
import React from 'react';
import { useState } from 'react';
import { StartingSection } from './components/StartingSection';
import { CustomizerSection } from './components/CustomizerSection';
function App() {
const [checkSection, setSection] = useState(false);
const showCustomizerSection = () => setSection(true);
const [Width, setWidth] = useState();
const [Length, setLength] = useState();
return (
<div className="App">
{checkSection ?
<CustomizerSection
Width={Width}
Length={Length}
/>
:
<StartingSection
Width={Width}
setWidth={setWidth}
Length={Length}
setLength={setLength}
onClick={showCustomizerSection}
/>
}
</div>
);
字符串
StartingSection.jsx
export function StartingSection({onClick, Width, setWidth, Length, setLength}) {
return(
<div>
<input type="number" value={Width || ''} onChange={event => setWidth(event.target.value)} />
<input type="number" value={Length || ''} onChange={event => setLength(event.target.value)} />
<button className="button w-100" onClick={onClick}>Continue</button>
</div>
)
}
型
CustomizerSection.jsx
我将值传递给这个部分,此时发生了我上面指出的错误。
export function CustomizerSection({Width, Length}) {
return(
<div>
<input type="number" value={Width} /> <=== this is where I pass the value
<input type="number" value={Length} /> <=== this is where I pass the value
</div>
)
}
型
有什么问题吗?谢谢!
1条答案
按热度按时间oiopk7p51#
在我看来,错误消息正确地识别了这种情况。例如,您正在绑定
Width
的值,但一旦设置了Width
,您就不允许任何更改。我不知道你在哪里使用
setSection
,但它看起来好像一旦使用StartingSection
,然后显示CustomizerSection
。然而,一旦显示CustomizerSection
,它就不能使用setWidth
或setLength
来改变值。这导致了你得到一个只读文本框的情况(由于值的单向绑定)。如果您想使用
StartingSection
作为初始值,然后更改它们,则需要为新的CustomizerSection
值管理单独的状态:字符串
对
CustomizerSection
的更改:型