Reactjs 语义UI下拉列表,尝试设置从子级到父级的状态
我试图通过在名称字段和值字段中尝试三元运算符,在父组件中渲染下拉语义组件2次。这是我的父组件Reactjs 语义UI下拉列表,尝试设置从子级到父级的状态,reactjs,create-react-app,semantic-ui,yarnpkg,react-dom,Reactjs,Create React App,Semantic Ui,Yarnpkg,React Dom,我试图通过在名称字段和值字段中尝试三元运算符,在父组件中渲染下拉语义组件2次。这是我的父组件 import React, { Component } from "react"; import CountrySel from "./countrySelection"; class AppDetail extends Component { constructor(props) { super(props); this.state = {
import React, { Component } from "react";
import CountrySel from "./countrySelection";
class AppDetail extends Component {
constructor(props) {
super(props);
this.state = {
nationality1: "",
nationality2: "",
};
}
valueChange = (event) => {
this.setState({
[event.target.name]: event.target.value,
});
console.log(event.target.name);
console.log(event.target.value);
};
render() {
return (
<div className="ApplicantDetail">
<label>
{" "}
Nationality 1:
<CountrySel
name="nationality1"
countrySelection={this.state.nationality1}
/>
</label>
<br></br>
<label >
{" "}
Nationality 2:
<CountrySel
name="nationality2"
countrySelection={this.state.nationality2}
/>
</label>
</Form>
</div>
);
}
}
export default AppDetail;
import React,{Component}来自“React”;
从“/countrySelection”导入CountrySell;
类AppDetail扩展组件{
建造师(道具){
超级(道具);
此.state={
国家1:“,
国家2:“,
};
}
值更改=(事件)=>{
这是我的国家({
[event.target.name]:event.target.value,
});
日志(event.target.name);
日志(event.target.value);
};
render(){
返回(
{" "}
国籍1:
{" "}
国籍2:
);
}
}
导出默认AppDetail;
我的子组件是:-
import React,{Component}来自“React”;
从“语义ui反应”导入{Dropdown};
const countryOptions=[
{键:“af”,值:“af”,旗:“af”,文本:“阿富汗”},
{键:“ax”,值:“ax”,标志:“ax”,文本:“阿兰群岛”},
{键:“al”,值:“al”,旗:“al”,文字:“阿尔巴尼亚”},
{键:“dz”,值:“dz”,旗:“dz”,文字:“阿尔及利亚”},
{键:“as”,值:“as”,旗:“as”,文本:“美属萨摩亚”},
{键:“ad”,值:“ad”,旗:“ad”,文字:“安道尔”},
{键:“ao”,值:“ao”,旗:“ao”,文字:“安哥拉”},
{键:“ai”,值:“ai”,旗:“ai”,文字:“安圭拉”},
{键:“ag”,值:“ag”,旗:“ag”,文字:“安提瓜”},
{键:“ar”,值:“ar”,旗:“ar”,文本:“阿根廷”},
{键:“am”,值:“am”,旗:“am”,文字:“亚美尼亚”},
{键:“aw”,值:“aw”,标志:“aw”,文字:“阿鲁巴”},
{键:“非盟”,值:“非盟”,旗:“非盟”,文字:“澳大利亚”},
{键:“在”,值:“在”,旗:“在”,文本:“奥地利”},
{键:“az”,值:“az”,旗:“az”,文字:“阿塞拜疆”},
{键:“bs”,值:“bs”,标志:“bs”,文本:“巴哈马”},
{键:“bh”,值:“bh”,旗:“bh”,文本:“巴林”},
{键:“bd”,值:“bd”,标志:“bd”,文本:“孟加拉”},
{键:“bb”,值:“bb”,旗:“bb”,文字:“巴巴多斯”},
{键:“by”,值:“by”,旗:“by”,文本:“白俄罗斯”},
{键:“be”,值:“be”,旗:“be”,文本:“比利时”},
{键:“bz”,值:“bz”,标志:“bz”,文字:“伯利兹”},
{键:“bj”,值:“bj”,旗:“bj”,文本:“贝宁”},
{键:“英国”,值:“英国”,旗:“英国”,文本:“联合王国”},
{键:“in”,值:“in”,旗:“in”,文本:“India”},
];
类countrySelect扩展组件{
建造师(道具){
超级(道具);
此.state={
国家1:“,
国家2:“,
};
}
选择国家=(val)=>(
这里尝试了三元运算符和名称字段,但没有任何效果。。。
选项={countryOptions}
onChange={this.handleDropdownChange.bind(this)}
/>
);
handleDropdownChange=(事件)=>{
event.persist();
这是我的国家({
[event.target.name]:event.target.value,
});
日志(event.target.name);
日志(event.target.value);
};
render(){
返回{this.selectCountry(this.props.countrySelection)};
}
}
导出默认国家选择;
正在尝试实现以下功能:-
当我选择nationality1时,我的nationality1状态应更新为父项,对于Nationality2,则反之亦然
有人能帮我吗???。如果我理解的很好,你基本上想把你孩子的数据发送给你的父母。您只需将
valueChange
方法传递给您的子组件,它将在需要时调用它
以下是代码:
import React, { Component } from "react";
import { render } from "react-dom";
import "./style.css";
const App = () => {
const [appState, setAppState] = React.useState(null);
const valueChange = e => {
e.persist();
setAppState(prevState => ({...prevState, [e.target.name]: e.target.value}));
};
return (
<div>
Child 1: <Child valueChange={valueChange} childName="child1" />
<br />
Child 2 :<Child valueChange={valueChange} childName="chlid2" />
<br />
<br />
appState : <pre>{JSON.stringify(appState)}</pre>
</div>
);
};
const Child = ({ valueChange, childName }) => {
return <input type="text" name={childName} onChange={valueChange} />;
};
render(<App />, document.getElementById("root"));
import React,{Component}来自“React”;
从“react dom”导入{render};
导入“/style.css”;
常量应用=()=>{
const[appState,setAppState]=React.useState(null);
常量值更改=e=>{
e、 坚持();
setAppState(prevState=>({…prevState[e.target.name]:e.target.value}));
};
返回(
儿童1:
儿童2:
appState:{JSON.stringify(appState)}
import React, { Component } from "react";
import { render } from "react-dom";
import "./style.css";
class App extends Component {
state = null;
valueChange(e) {
e.persist();
this.setState(prevState => ({
...prevState,
[e.target.name]: e.target.value
}));
}
render() {
return (
<div>
Child 1: <Child valueChange={(e) => this.valueChange(e)} childName="child1" />
<br />
Child 2 :<Child valueChange={(e) => this.valueChange(e)} childName="chld2" />
<br />
<br />
state : <pre>{JSON.stringify(this.state)}</pre>
</div>
);
}
}
const Child = ({ valueChange, childName }) => {
return (
<select name={childName} onChange={valueChange}>
<option selected>None</option>
<option value="nat 1">Nat 1</option>
<option value="nat 2">Nat 2</option>
<option value="nat 3">Nat 3</option>
</select>
);
};
render(<App />, document.getElementById("root"));
);
};
const Child=({valueChange,childName})=>{
返回;
};
render(,document.getElementById(“根”));
[编辑]以下是带有类组件的版本:
import React, { Component } from "react";
import { Dropdown } from "semantic-ui-react";
const countryOptions = [
{ key: "af", value: "af", flag: "af", text: "Afghanistan" },
{ key: "ax", value: "ax", flag: "ax", text: "Aland Islands" },
{ key: "al", value: "al", flag: "al", text: "Albania" },
{ key: "dz", value: "dz", flag: "dz", text: "Algeria" },
{ key: "as", value: "as", flag: "as", text: "American Samoa" },
{ key: "ad", value: "ad", flag: "ad", text: "Andorra" },
{ key: "ao", value: "ao", flag: "ao", text: "Angola" },
{ key: "ai", value: "ai", flag: "ai", text: "Anguilla" },
{ key: "ag", value: "ag", flag: "ag", text: "Antigua" },
{ key: "ar", value: "ar", flag: "ar", text: "Argentina" },
{ key: "am", value: "am", flag: "am", text: "Armenia" },
{ key: "aw", value: "aw", flag: "aw", text: "Aruba" },
{ key: "au", value: "au", flag: "au", text: "Australia" },
{ key: "at", value: "at", flag: "at", text: "Austria" },
{ key: "az", value: "az", flag: "az", text: "Azerbaijan" },
{ key: "bs", value: "bs", flag: "bs", text: "Bahamas" },
{ key: "bh", value: "bh", flag: "bh", text: "Bahrain" },
{ key: "bd", value: "bd", flag: "bd", text: "Bangladesh" },
{ key: "bb", value: "bb", flag: "bb", text: "Barbados" },
{ key: "by", value: "by", flag: "by", text: "Belarus" },
{ key: "be", value: "be", flag: "be", text: "Belgium" },
{ key: "bz", value: "bz", flag: "bz", text: "Belize" },
{ key: "bj", value: "bj", flag: "bj", text: "Benin" },
{ key: "uk", value: "uk", flag: "uk", text: "United Kingdom" },
{ key: "in", value: "in", flag: "in", text: "India" },
];
class countrySelect extends Component {
constructor(props) {
super(props);
this.state = {
nationality1: " ",
nationality2: " ",
};
}
valueChange = (e) => {
e.persist();
if (e.target.name === "undefined") {
return;
} else {
this.setState({
[e.target.name]: e.target.value,
});
console.log(e.target.name);
console.log(e.target.value);
}
};
selectCountry = ({ valueChange, childName }) => {
return (
<Dropdown
placeholder="Select Country"
name={childName}
fluid
search
selection
options={countryOptions}
onChange={valueChange}
/>
);
};
render() {
return (
<div>
Child 1:{" "}
<this.selectCountry
valueChange={this.valueChange}
childName="nationality1"
/>
<br />
Child 2 :
<this.selectCountry
valueChange={this.valueChange}
childName="nationality2"
/>
<br />
</div>
);
}
}
export default countrySelect;
````
import React,{Component}来自“React”;
从“react dom”导入{render};
导入“/style.css”;
类应用程序扩展组件{
state=null;
价值变化(e){
e、 坚持();
this.setState(prevState=>({
…国家,
[e.target.name]:e.target.value
}));
}
render(){
返回(
子1:this.valueChange(e)}childName=“child1”/>
子2:this.valueChange(e)}childName=“chld2”/>
状态:{JSON.stringify(this.state)}
);
}
}
const Child=({valueChange,childName})=>{
返回(
没有一个
Nat 1
Nat 2
Nat 3
);
};
render(,document.getElementById(“根”));
如果我理解得很清楚,你基本上是想把孩子的数据发送给父母。您只需将valueChange
方法传递给您的子组件,它将在需要时调用它
以下是代码:
import React, { Component } from "react";
import { render } from "react-dom";
import "./style.css";
const App = () => {
const [appState, setAppState] = React.useState(null);
const valueChange = e => {
e.persist();
setAppState(prevState => ({...prevState, [e.target.name]: e.target.value}));
};
return (
<div>
Child 1: <Child valueChange={valueChange} childName="child1" />
<br />
Child 2 :<Child valueChange={valueChange} childName="chlid2" />
<br />
<br />
appState : <pre>{JSON.stringify(appState)}</pre>
</div>
);
};
const Child = ({ valueChange, childName }) => {
return <input type="text" name={childName} onChange={valueChange} />;
};
render(<App />, document.getElementById("root"));
import React,{Component}来自“React”;
从“react dom”导入{render};
导入“/style.css”;
常量应用=()=>{
const[appState,setAppState]=React.useState(null);
常量值更改=e=>{
e、 坚持();
setAppState(prevState=>({…prevState[e.target.name]:e.target.value}));
};
返回(
儿童1:
儿童2:
appState:{JSON.stringify(appState)}
import React, { Component } from "react";
import { render } from "react-dom";
import "./style.css";
class App extends Component {
state = null;
valueChange(e) {
e.persist();
this.setState(prevState => ({
...prevState,
[e.target.name]: e.target.value
}));
}
render() {
return (
<div>
Child 1: <Child valueChange={(e) => this.valueChange(e)} childName="child1" />
<br />
Child 2 :<Child valueChange={(e) => this.valueChange(e)} childName="chld2" />
<br />
<br />
state : <pre>{JSON.stringify(this.state)}</pre>
</div>
);
}
}
const Child = ({ valueChange, childName }) => {
return (
<select name={childName} onChange={valueChange}>
<option selected>None</option>
<option value="nat 1">Nat 1</option>
<option value="nat 2">Nat 2</option>
<option value="nat 3">Nat 3</option>
</select>
);
};
render(<App />, document.getElementById("root"));
);
};
const Child=({valueChange,childName})=>{
返回;
};
render(,document.getElementById(“根”));
[编辑]此处