Javascript 在函数中创建div(React)
我有一个练习,在那里我必须做一个输入和一个按钮。单击按钮时,必须在下面创建一个div/span,用于打印输入中的文本。如果我更改了输入中的文本,则只有在再次单击按钮时,才会刷新该div/span中的文本。我试着用Javascript 在函数中创建div(React),javascript,reactjs,Javascript,Reactjs,我有一个练习,在那里我必须做一个输入和一个按钮。单击按钮时,必须在下面创建一个div/span,用于打印输入中的文本。如果我更改了输入中的文本,则只有在再次单击按钮时,才会刷新该div/span中的文本。我试着用makeDiv函数来实现它,但它什么都没做。我制作了console.log(event.target.value),它处理输入中的文本,但之后什么也没发生 我的代码: import {useState} from "react" function About() {
makeDiv
函数来实现它,但它什么都没做。我制作了console.log(event.target.value)
,它处理输入中的文本,但之后什么也没发生
我的代码:
import {useState} from "react"
function About() {
const [initialValue,setInitialValue] = useState('')
const handleValueChange = (event) => {
console.log(event.target.value)
setInitialValue(event.target.value)
}
const makeDiv = () => {
return (<div>Value: {initialValue}</div>)
}
return(
<div>
<button onClick={makeDiv}>click me</button>
<div><input type="text" onChange={handleValueChange} /></div>
</div>
)
}
export default About
第一种可能性-靠近您的代码源 不要忘记将
initialValue
绑定到输入,并将makeDiv内容添加到JSX:
return (
<div>
<button onClick={makeDiv}>click me</button>
<input type="text" onChange={handleValueChange} value={initialValue} />
{makeDiv}
</div>
)
返回(
点击我
{makeDiv}
)
第二种可能性-采用另一种方法
return (
<div>
<button onClick={makeDiv}>click me</button>
<input type="text" onChange={handleValueChange} value={initialValue} />
{initialValue && <div>{initialValue}</div>}
</div>
)
返回(
点击我
{initialValue&&{initialValue}}
)
一种方法是创建另一个状态变量,该变量指示是否应显示您尝试创建的div
,然后有条件地进行渲染。差不多
import {useState} from "react"
function About() {
const [initialValue,setInitialValue] = useState('')
const [shouldDisplayText, setShouldDisplayText] = useState(false)
const handleValueChange = (event) => {
console.log(event.target.value)
setInitialValue(event.target.value)
}
const showDivWithText = () => setShouldDisplayText(true);
return(
<div>
<button onClick={showDivWithText}>click me</button>
<div><input type="text" onChange={handleValueChange} /></div>
{shouldDisplayText && <div>Value: {initialValue}</div>}
</div>
)
}
export default About
从“react”导入{useState}
函数About(){
常量[initialValue,setInitialValue]=useState(“”)
常量[shouldDisplayText,setShouldDisplayText]=useState(false)
const handleValueChange=(事件)=>{
console.log(event.target.value)
setInitialValue(event.target.value)
}
const showdivithtext=()=>setShouldDisplayText(true);
返回(
点击我
{shouldDisplayText&&Value:{initialValue}}
)
}
导出默认值关于
你的方法根本上是错误的
你应该:
- 存储状态下有关组件的所有数据
- 根据状态渲染输出
- currentInputValue(因为您需要存储要在输入中显示和编辑的值)
- selectedValue(因为您需要存储要在div中显示的值)
onChange
时,使用输入值更新currentInputValue
当触发onClick
时,使用当前值currentInputValue
更新selectedValue
返回数据时,请包括以下内容:
{selectedValue && <div>{selectedValue}</div>}
{selectedValue&&{selectedValue}
…若要仅在存在truthy值时输出包含选定值的div(默认空字符串不是truthy,因此该div将不会被输出)这将仅在单击按钮时刷新div的值,如您在问题中所述
import {useState} from "react"
function App() {
const [initialValue,setInitialValue] = useState('')
const [displayText, setDisplayText] = useState(false)
const [Value,setValue] = useState('')
const handleValueChange = (event) => {
setInitialValue(event.target.value)
}
const showText = () => {setDisplayText(true)
setValue(initialValue)};
return(
<div>
<button onClick={showText}>click me</button>
<div><input type="text" onChange={handleValueChange} /></div>
{displayText && <div>Value: {Value}</div>}
</div>
)
}
export default App
从“react”导入{useState}
函数App(){
常量[initialValue,setInitialValue]=useState(“”)
const[displayText,setDisplayText]=useState(false)
const[Value,setValue]=useState(“”)
const handleValueChange=(事件)=>{
setInitialValue(event.target.value)
}
const showText=()=>{setDisplayText(true)
设置值(初始值)};
返回(
点击我
{displayText&&Value:{Value}
)
}
导出默认应用程序
已编辑问题的解决方案。
import {useState} from "react"
function App() {
const [initialValue,setInitialValue] = useState('')
const [displayText, setDisplayText] = useState(false)
const [Value,setValue] = useState([])
const handleValueChange = (event) => {
setInitialValue(event.target.value)
}
const showText = () => {setDisplayText(true)
setValue([...Value,initialValue])};
return(
<div>
<button onClick={showText}>click me</button>
<div><input type="text" onChange={handleValueChange} /></div>
<ul>{displayText && Value.length > 0 &&
Value.map((i) => {
return <li>Value: {i}</li>
})}</ul>
</div>
)
}
export default App
从“react”导入{useState}
函数App(){
常量[initialValue,setInitialValue]=useState(“”)
const[displayText,setDisplayText]=useState(false)
常量[Value,setValue]=useState([])
const handleValueChange=(事件)=>{
setInitialValue(event.target.value)
}
const showText=()=>{setDisplayText(true)
setValue([…Value,initialValue]);
返回(
点击我
{displayText&&Value.length>0&&
Value.map((i)=>{
返回- 值:{i}
})}
)
}
导出默认应用程序
makeJSX它没有改变任何东西:/I即使我刚刚做了更新?它现在也无法编译-那是什么makeJSX
?很抱歉,它是makeDiv
它不能正常工作,因为当我们在输入中更改文本时,它会立即刷新div-只有在我单击按钮时才会刷新它。对不起,我没有正确阅读问题的描述。在这种情况下,只需保留需要显示在div
中的文本的另一个状态变量,而不是保留是否应显示该文本的变量,并且每次单击按钮时更新它(不是调用变量currentlyDisplayedText
,而是调用变量currentlyDisplayedText
,每当你点击按钮时,函数应该是()=>setCurrentlyDisplayedText(initialValue)
我编辑了我的文章,因为我有另一个非常类似的练习,但它又不想编译。)
import {useState} from "react"
function App() {
const [initialValue,setInitialValue] = useState('')
const [displayText, setDisplayText] = useState(false)
const [Value,setValue] = useState([])
const handleValueChange = (event) => {
setInitialValue(event.target.value)
}
const showText = () => {setDisplayText(true)
setValue([...Value,initialValue])};
return(
<div>
<button onClick={showText}>click me</button>
<div><input type="text" onChange={handleValueChange} /></div>
<ul>{displayText && Value.length > 0 &&
Value.map((i) => {
return <li>Value: {i}</li>
})}</ul>
</div>
)
}
export default App