나는 여전히 React를 처음 사용하므로 반복적 인 게시물이라면 죄송합니다. 저는 React와 함께 다른 페이지에 퍼지는 양식을 만들고 있습니다. 아이디어는 구직 지원서에서받을 수있는 유형의 양식을 갖는 것입니다. 여러 단계가있는 것.
양식의 각 단계마다 다른 구성 요소가 있습니다. 첫 번째 페이지는 홈 페이지 입니다. 만들기 페이지로 이동하는 버튼을 상상해보세요. 그런 다음 만들기 페이지가 표시 됩니다. 금액 과 이름 이 적힌 작은 양식이 있습니다 . 다음 페이지를 클릭하면 맞춤 설정 페이지가 표시 됩니다. 여기에서 우선 순위에 따라 예산을 수정할 수 있습니다.
여기에 제대로 그려지지 않은 그림에는 분명히 앱이 있고 아이들의 상태를 관리 할 수있는 예산 홈페이지가 있습니다. 나는 그렇게해야한다고 생각했다. 왜냐하면 그것이 내가 방법을 아는 유일한 방법이기 때문이다. 내가 가진 문제는 하나입니다. 구성 요소 전체에 상태를 올바르게 전달하는 방법을 모릅니다. 2 : 나는 내가하는 일이 옳은지조차 모른다. React 문서는 클래스 기반 구성 요소에서 양식을 사용하는데 도움이되지만 문제에 맞게 구성 할 수 없습니다.
어떤 도움이나 제안이라도 대단히 감사합니다. 또한 예산 페이지의 코드를 표시하고 싶습니다.
import React, { useState, useEffect, useRef } from "react";
import BudgetResultsPage from './BudgetResultsPage';
const [count, setState] = useState(0);
const handleStateCount = () => {
if(count>3) {count = 0;}
return setState(count + 1);
}
if(count === 0) {
console.log(`homepage state ${count}`)
return (
<div className={Styles.Calculator}>
<BudgetHomePage setState={count} handleStateCount={handleStateCount}/>
</div>
)
} else if(count===1) {
console.log(`budget create state ${count}`)
return (
<div className={Styles.Calculator}>
<CalculatorHeader />
<CreateBudget setState={count} handleStateCount={handleStateCount} setAmount={amount} handleAmount={handleAmount}/>
</div>
)}
분명히 다른 페이지에 대한 가져 오기가 더 많고 구성 요소에 더 많은 코드가 전달됩니다. 이것은 구성 요소를 처리하는 방법의 일부일뿐입니다 .
아마 어리석은 일이지만 상태에서 카운트를 생성하고 있습니다. 양식의 일부가 제출되면 카운트가 올라가고 카운트가 무엇인지에 따라 페이지를 변경합니다. 하나의 상태에서만 잘 작동 하지만 더 많은 상태를 추가하는 데 문제가 있습니다.
다시 한 번 감사드립니다!
몇 가지 질문을 설명하는 예제 기능 구성 요소를 작성했습니다. 나는 이것을 집에서 썼고 메모장 ++ 만 가지고 있었으므로 붙여 넣으면 컴파일되지 않을 수 있습니다. 의견은 귀하의 질문을 설명합니다
import React from 'react';
import Create_budget_page from './Create_budget_page.js';
const BudgetPage = props => {
// State 1: assigning one value to the state.
// State 2: assinging a list to the state.
// State 3: assinging a object to the state.
const [simple_state, set_simple_state] = useState(false);
const [list_state, set_list_state] = useState(["Hello","World","!"]);
const [object_state, set_object_state] = useState(
{
curmenu: "human_bios",
height: "196cm",
weight: "174lbs",
eye_colour: "blue",
hair_colour: "dirty_blonde"
}
);
// there are several possiblities, here's one with a list of objects
const [list_objects, set_list_objects] = useState(
[
{count: 69, wasClicked: false},
{count: 420, wasClicked: true},
// endless possibilities, the tricky part is properly correctly updating your states deep in the list
{integers: [1,5,2,3], keys: {isAlive: false, cur_menu: "config_menu"}}
]
);
// this function updates the state that stores an object
// arguments:
// new_values_object: the programmer passes in a object to the function with the values they want to update
// an example of calling this function in a child functional component:
// props.update_object_state({height: "165cm", weight: "143lbs", hair_colour: "black"});
function update_object_state(new_values_object){
set_object_state(prevState => {
const new_obj = prevState;
// loop through object keys and update the new_obj with the object passed in as a argument
for (var key in new_values_object){
new_obj[key] = new_values_object[key];
}
// returning the new_object will update the object_state
return new_obj;
})
}
// conditionally render based on state
switch(object_state["curmenu"]){
case "home_page":
return (
// pass in
// all props, 1 prop, state
<Create_budget_page {...props} parent_id={prop.parent_id} simple_state={simple_state} list_objects={list_objects}/>
) ;
break;
// pass in function
case "human_bios":
return (
<div className="error_page" onClick={() => {props.update_parent_state({error_occured: true})}}>This is an Error Page, click me to report diagnostics</div>
);
break;
// if none of cases are met default code executes
default:
// renders nothing
return null;
}
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다