第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何在ReactJS中將數(shù)據(jù)從子組件傳遞給其父組件?

如何在ReactJS中將數(shù)據(jù)從子組件傳遞給其父組件?

九州編程 2019-06-18 11:15:02
如何在ReactJS中將數(shù)據(jù)從子組件傳遞給其父組件?我試圖將數(shù)據(jù)從子組件發(fā)送到其父組件,如下所示:const ParentComponent = React.createClass({     getInitialState() {         return {             language: '',         };     },     handleLanguageCode: function(langValue) {         this.setState({language: langValue});     },     render() {          return (                 <div className="col-sm-9" >                     <SelectLanguage onSelectLanguage={this.handleLanguage}/>                  </div>         );});以下是子組件:export const SelectLanguage = React.createClass({     getInitialState: function(){         return{             selectedCode: '',             selectedLanguage: '',         };     },     handleLangChange: function (e) {         var lang = this.state.selectedLanguage;         var code = this.state.selectedCode;         this.props.onSelectLanguage({selectedLanguage: lang});            this.props.onSelectLanguage({selectedCode: code});                },     render() {         var json = require("json!../languages.json");         var jsonArray = json.languages;         return (             <div >                 <DropdownList ref='dropdown'                     data={jsonArray}                      value={this.state.selectedLanguage}                     caseSensitive={false}                      minLength={3}                     filter='contains'                     onChange={this.handleLangChange} />             </div>                     );     }});我需要的是通過父組件中的用戶獲取所選的值。我得到了一個(gè)錯(cuò)誤:Uncaught TypeError: this.props.onSelectLanguage is not a function有人能幫我找出問題嗎?子組件正在從一個(gè)json文件中創(chuàng)建一個(gè)下拉列表,我需要下拉列表來顯示JSON數(shù)組的兩個(gè)元素(比如:“AAA,English”作為首選!){      "languages":[         [            "aaa",          "english"       ],       [            "aab",          "swedish"       ],}
查看完整描述

3 回答

?
海綿寶寶撒

TA貢獻(xiàn)1809條經(jīng)驗(yàn) 獲得超8個(gè)贊

這應(yīng)該管用。在將支柱發(fā)送回時(shí),您是將其作為對象發(fā)送,而不是將其作為值發(fā)送,或者將其作為父組件中的對象使用。其次,您需要格式化json對象以包含名稱值對,并使用valueFieldtextField屬性DropdownList

簡短回答

家長:

<div className="col-sm-9" >
     <SelectLanguage onSelectLanguage={this.handleLanguage}/> </div>

兒童:

handleLangChange = () => {
    var lang = this.dropdown.value;
    this.props.onSelectLanguage(lang);            }

詳細(xì)說明:

編輯:

考慮到從v16.0開始就不再推薦React.createClass,最好繼續(xù)通過擴(kuò)展創(chuàng)建一個(gè)Reaction組件。React.Component..使用此語法將數(shù)據(jù)從子組件傳遞到父組件,如下所示

父母

class ParentComponent extends React.Component{
    state: { language: '' }

    handleLanguage = (langValue) => {
        this.setState({language: langValue});
    }

    render() {
         return (
                <div className="col-sm-9" >
                    <SelectLanguage onSelectLanguage={this.handleLanguage}/> 
                </div>
        )
     }}

兒童

var json = require("json!../languages.json");var jsonArray = json.languages;export class SelectLanguage extends React.Component {
    state = {
            selectedCode: '',
            selectedLanguage: jsonArray[0],
        }

    handleLangChange = () => {
        var lang = this.dropdown.value;
        this.props.onSelectLanguage(lang);            
    }

    render() {
        return (
            <div >
                <DropdownList ref={(ref) => this.dropdown = ref}
                    data={jsonArray} 
                    valueField='lang' textField='lang'
                    caseSensitive={false} 
                    minLength={3}
                    filter='contains'
                    onChange={this.handleLangChange} />
            </div>            
        );
    }}

使用createClassOP在他的回答中使用的語法父母

const ParentComponent = React.createClass({
    getInitialState() {
        return {
            language: '',
        };
    },
    handleLanguage: function(langValue) {
        this.setState({language: langValue});
    },

    render() {
         return (
                <div className="col-sm-9" >
                    <SelectLanguage onSelectLanguage={this.handleLanguage}/> 
                </div>
        );});

兒童

var json = require("json!../languages.json");var jsonArray = json.languages;export const SelectLanguage = React.createClass({
    getInitialState: function(){
        return{
            selectedCode: '',
            selectedLanguage: jsonArray[0],
        };
    },

    handleLangChange: function () {
        var lang = this.refs.dropdown.value;
        this.props.onSelectLanguage(lang);            
    },

    render() {

        return (
            <div >
                <DropdownList ref='dropdown'
                    data={jsonArray} 
                    valueField='lang' textField='lang'
                    caseSensitive={false} 
                    minLength={3}
                    filter='contains'
                    onChange={this.handleLangChange} />
            </div>            
        );
    }});

杰森:

{ "languages":[ 

    { 
    "code": "aaa", 
    "lang": "english" 
    }, 
    { 
    "code": "aab", 
    "lang": "Swedish" 
    }, 
  ] }


查看完整回答
反對 回復(fù) 2019-06-18
?
慕萊塢森

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊

將數(shù)據(jù)從子組件傳遞到父組件

在父級組件中:

getData(val){
    // do not forget to bind getData in constructor
    console.log(val);}render(){
 return(<Child sendData={this.getData}/>);}

在兒童部分:

demoMethod(){
   this.props.sendData(value);
 }


查看完整回答
反對 回復(fù) 2019-06-18
?
白衣非少年

TA貢獻(xiàn)1155條經(jīng)驗(yàn) 獲得超0個(gè)贊

當(dāng)我需要時(shí),我發(fā)現(xiàn)了如何從父母中的子組件中獲取數(shù)據(jù)的方法。

家長:

class ParentComponent extends Component{
  onSubmit(data) {
    let mapPoint = this.getMapPoint();
  }

  render(){
    return (
      <form onSubmit={this.onSubmit.bind(this)}>
        <ChildComponent getCurrentPoint={getMapPoint => {this.getMapPoint = getMapPoint}} />
        <input type="submit" value="Submit" />
      </form>
    )
  }}

兒童:

class ChildComponent extends Component{
  constructor(props){
    super(props);

    if (props.getCurrentPoint){
      props.getCurrentPoint(this.getMapPoint.bind(this));
    }
  }

  getMapPoint(){
    return this.Point;
  }}

此示例演示如何將函數(shù)從子組件傳遞給父組件,并使用此函數(shù)從子組件獲取數(shù)據(jù)。


查看完整回答
反對 回復(fù) 2019-06-18
  • 3 回答
  • 0 關(guān)注
  • 2154 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號