我正在制作一个食谱盒应用程序,我决定从我的处理标题
和处理输入
方法开始。我能够把它拉出来,但是现在我想做一个对象数组(对象包含标题和描述),然后我将通过这个数组映射并显示数据。
但是我的handleSubmit
函数没有按我想要的方式工作。我希望用户能够编写多个标题和描述,这些标题和描述将不断添加到该州的recipes数组中。看看代码:
import React, { useState } from "react";
import "./styles.css";
import { Form } from "./components/containers/Form";
export default function App() {
const [title, setTitle] = useState("");
const [description, setDescription] = useState("");
const [recipe, setRecipe] = useState([]);
const handleTitle = e => {
setTitle(e.target.value);
};
const handleDescription = e => {
setDescription(e.target.value);
};
const handleSubmit = e => {
e.preventDefault();
if (title !== "" && description !== "") {
setRecipe(prevState => {
const data = { title: title, description: description };
return {
...prevState,
recipe: prevState.recipe.concat(data)
};
});
}
};
return (
<div className="App">
<Form
title={title}
description={description}
handleTitle={handleTitle}
handleDescription={handleDescription}
handleSubmit={handleSubmit}
/>
</div>
);
}
import React from "react";
export const Form = ({
handleTitle,
handleDescription,
handleSubmit,
title,
description
}) => {
return (
<div>
<form onSubmit={handleSubmit}>
<input
type="text"
onChange={handleTitle}
placeholder="title"
value={title}
/>
<input
type="text"
onChange={handleDescription}
placeholder="description"
value={description}
/>
<button>Add</button>
</form>
</div>
);
};
设置配方时,将配方状态的原始类型更改为对象。相反,您应该返回一个包含以前食谱和新食谱的新数组。
我在下面附上了一个可运行的示例:
const Form = ({
handleTitle,
handleDescription,
handleSubmit,
title,
description
}) => {
return (
<div>
<form onSubmit={handleSubmit}>
<input
type="text"
onChange={handleTitle}
placeholder="title"
value={title}
/>
<input
type="text"
onChange={handleDescription}
placeholder="description"
value={description}
/>
<button>Add</button>
</form>
</div>
);
};
function App() {
const [title, setTitle] = React.useState("");
const [description, setDescription] = React.useState("");
const [recipes, setRecipes] = React.useState([]);
const handleTitle = e => {
setTitle(e.target.value);
};
const handleDescription = e => {
setDescription(e.target.value);
};
const handleSubmit = e => {
e.preventDefault();
if (title !== "" && description !== "") {
setRecipes(prevState => {
const data = { title: title, description: description };
return [...prevState, data];
});
setTitle("");
setDescription("");
}
};
return (
<div className="App">
<Form
title={title}
description={description}
handleTitle={handleTitle}
handleDescription={handleDescription}
handleSubmit={handleSubmit}
/>
<h5>Recipes</h5>
{recipes.length === 0
? (
<div>No recipes</div>
)
: (
<ul>
{recipes.map(({ title, description }) => (
<li>
{title} : {description}
</li>
))}
</ul>
)}
</div>
);
}
ReactDOM.render(<App/>, document.getElementById('root'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.8.0/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.8.0/umd/react-dom.production.min.js"></script>
<div id="root"></div>
Quickie对象状态简介 了解实例在会话中的状态是很有帮助的: 瞬变 -不在会话中且未保存到数据库中的实例;即没有数据库标识。这类对象与ORM的唯一关系是它的类有一个 Mapper 与之相关的。 悬而未决的 当你 Session.add() 一个暂时的实例,它将变为挂起。它实际上还没有被刷新到数据库中,但是下一次刷新发生时会被刷新。 持久的 -存在于会话中且在数据库中有记录的实例。通过刷新使挂起
投资管理 跨境贸易 在国际贸易活动中,买卖双方可能互不信任。因此需要两家银行作为买卖双方的保证人,代为收款交单,并以银行信用代替商业信用。 区块链可以为信用证交易参与方提供共同账本,允许银行和其它参与方拥有经过确认的共同交易记录并据此履约,从而降低风险和成本。 一带一路 一带一路中对区块链技术的探索应用,能让原先无法交易的双方(例如,不存在都认可的国际货币情况下)完成交易,并且降低贸易风险、减少成
每个国家都有一个特定的 ISO 3166代码 。 根据输入数据和用户的交互行为,在Gio地球表面的国家可以有以下几种状态: 1. 被选中的国家 当用户点击Gio地球表面某个国家的区域时,这个国家会以“被选中”的状态点亮。此时这个国家被称为"被选中的国家"。 可以通过 configure() API来设置被选中国家的颜色,具体设置方法如下所示: controller.configure({
设置专家 功能介绍:设置专家,学员可向专家提问问题,专家可设置付费回答。 适用场景:学员在家自学并询问老师。 步骤 从【在线问答】→【专家管理】→【添加专家】,进入设置专家页面。 搜索的专家昵称为访问过你店铺的微信昵称。 编辑专家资料 功能介绍:设置专家信息资料以及付费金额。 步骤 从【在线问答】→【专家管理】→【编辑】,进入编辑专家资料页面。
6.11电话面,苹果没录音功能, 简单自我介绍 1.CSS盒模型 2.没听清问了啥,好像是元素重叠怎么办 3.垂直居中能说出几种 4.浏览器存储有几种及区别 5.父子组件通信 6.子组件通信具体实现 7.非父子组件如何通信 8.vue生命周期,父子组件生命周期先后顺序 9.事件循环是什么,宏任务微任务先后顺序,宏任务和微任务有哪些 10.大文件上传逻辑,怎么实现秒传和断点续传 11.vue双向数据
问题内容: 我已经找到了针对Objective-C的答案,但是林先生很难迅速做到这一点。 我用它来获取当前位置的国家代码: 但是,如何将该国家/地区代码转换为国家/地区名称,例如在此示例中,将“ US”转换为“ United States”? 问题答案: 迅捷3