【发布时间】:2020-07-27 20:45:57
【问题描述】:
我是 react(javascript) 的初学者,正在做 todo 应用程序,有一个与在 if 语句中返回但不返回任何内容相关的问题(如果用户什么都不写并按 Enter 则不算数),但是当我采取它离开它会影响 todo 应用程序的行为。我的问题是这部分代码是什么意思 if (!value) { return }
如果没有价值,它将返回什么?为什么拿走“回报”会改变 todo 应用程序的行为?
这是代码:
import React, { useState } from 'react';
import './App.css';
function Todo({ tod, index }) {
return <div className="todo">{tod.text}</div>
}
function TodoForm({ addTodo }) {
const [value, setValue] = useState('');
console.log(value)
const handleSubmit = e => {
e.preventDefault();
if (!value) {
return
}
addTodo(value);
setValue('');
}
return (
<form onSubmit={handleSubmit}>
<input
type="text"
className="input"
value={value}
placeholder="Add Todo..."
onChange={e => setValue(e.target.value)}
/>
</form>
)
}
function App() {
const [todos, setTodos] = useState([
{
text: ' Learn by doing',
isCompleted: false
}
]);
const addTodo = text => {
const newTodos = [...todos, { text }];
setTodos(newTodos);
}
return (
<div className="app">
<div className="todo-List">
{todos.map((todo, index) =>
<Todo key={index} index={index} tod={todo} />
)}
<TodoForm addTodo={addTodo} />
</div>
</div>
)
}
export default App;
这里我有 javascript 代码,我试图使用与上面代码相同的语句 (if(!text){ return })
在这里,我是否有“返回”都没有关系,两种方式都是一样的(为什么在前面的例子中它是不同的?)
:
function myFunction(text) {
var text=document.getElementById('text').value
event.preventDefault();
console.log(text);
if(!text){
return
}
else{
document.getElementById('demo').innerHTML = "Text typed: "+text; // if nothing
}}
<form onsubmit="myFunction()">
<input type="text" id="text" >
</form>
<p id="demo"></p>
英语不是我的母语,如有错误请见谅。
【问题讨论】:
-
为什么我的投票被否决了?我有代码和问题,并与同类其他代码进行了比较
-
看起来这些反对票已被清除 - 可能是误会。
-
反对票没有被“清理”;有两个人投了赞成票。见When is it justifiable to downvote a question?。对
return语句的少量研究将告诉您如果未指定值,将返回什么。投反对票的原因之一是“这个问题没有显示任何研究工作......”此外,您的两段代码并不相同;一种用途是if块中没有else的return,另一种用途是else,这会改变流程。 -
但这只是我的猜测;我不知道,投票是匿名的。
-
@HereticMonkey 我也试过没有 else 也没有写任何东西,只是按 enter 并从控制台检查它的工作,但是当我不写任何东西并按 enter 时,使用第一个代码(反应),控制台中没有任何显示
标签: javascript html reactjs function if-statement