Heim > Web-Frontend > js-Tutorial > Hauptteil

Welche Möglichkeiten gibt es, Parameter in React zu übergeben?

王林
Freigeben: 2021-02-02 11:41:30
nach vorne
1935 Leute haben es durchsucht

Welche Möglichkeiten gibt es, Parameter in React zu übergeben?

React ist eine JAVASCRIPT-Bibliothek zum Erstellen von Benutzeroberflächen.

React wird hauptsächlich zum Erstellen einer Benutzeroberfläche verwendet. Viele Leute denken, dass React das V (Ansicht) in MVC ist.

React entstand aus dem internen Projekt von Facebook und wurde zum Aufbau der Website von Instagram verwendet und wurde im Mai 2013 als Open Source bereitgestellt.

React hat eine hohe Leistung und eine sehr einfache Codelogik. Immer mehr Menschen achten darauf und nutzen es.

Am häufigsten werden Parameter zwischen übergeordneten und untergeordneten Komponenten übergeben.

Die übergeordnete Komponente übergibt Werte an die untergeordneten Komponenten. Dies kann direkt mit this.props erreicht werden.

Fügen Sie in der übergeordneten Komponente ein benutzerdefiniertes Attribut hinzu die untergeordnete Komponente, die Daten übertragen muss. In der untergeordneten Komponente können Sie die von der übergeordneten Komponente übergebenen Daten über this.props abrufen.

// 父组件 render() {        
    return (                // 使用自定义属性传递需要传递的方法或者参数
                <ShopUi toson={this.state}></ShopUi>            
                   )
    } 

//子组件 //通过this.props.toson就可以获取到父组件传递过来的数据 、、如果还需要往孙组件传递那么在子组件通过自定义属性继续传递就行了
      tograndson={this.props.toson}
、、孙组件通过this.props.tograndson获取到数据
Nach dem Login kopieren

Wenn die untergeordnete Komponente den Wert an die übergeordnete Komponente übergibt, müssen Sie die Empfangsfunktion festlegen und Zustand in der übergeordneten Komponente und übergeben Sie gleichzeitig den Funktionsnamen über Requisiten an die untergeordnete Komponente

Das heißt, die Methode zum Übergeben der übergeordneten Komponente an die untergeordnete Komponente wird in der untergeordneten Komponente aufgerufen

//孙子组件export default class Grandson extends Component{
    render(){        return (            <div style={{border: "1px solid red",margin: "10px"}}>
        {this.props.name}:                <select onChange={this.props.handleSelect}>
                    <option value="男">男</option>
                    <option value="女">女</option>
                </select>
            </div>        )
    }
}; 
//子组件export default class Child extends Component{
    render(){        return (            <div style={{border: "1px solid green",margin: "10px"}}>
                {this.props.name}:<input onChange={this.props.handleVal}/>
                <Grandson name="性别" handleSelect={this.props.handleSelect}/>
            </div>        )
    }
}; 
//父组件export default class Parent extends Component{
 
    constructor(props){
        super(props)        this.state={
            username: &#39;&#39;,
            sex: &#39;&#39;
        }   
    },
    handleVal(event){        this.setState({username: event.target.value});
    },
    handleSelect(value) {        this.setState({sex: event.target.value});
    },
    render(){        return (            <div style={{border: "1px solid #000",padding: "10px"}}>
                <div>用户姓名:{this.state.username}</div>
                <div>用户性别:{this.state.sex}</div>
                <Child name="姓名" handleVal={this.handleVal} handleSelect={this.handleSelect}/>
            </div>        )
    }
}
Nach dem Login kopieren

Jemand hat mich gefragt Diese Frage vor einiger Zeit: Wozu dient super() im Konstruktor?

Um es zusammenzufassen:

Wenn Sie dies im Konstruktor der Unterklasse verwenden möchten, müssen Sie den Konstruktor der übergeordneten Klasse aufrufen, sonst erhalten Sie dies nicht

Dann stellt sich die Frage, wie man den Konstruktor der Unterklasse aufruft Elternklasse? Durch super()

Wenn Sie die von der übergeordneten Komponente im Konstruktor übergebenen Parameter verwenden möchten, müssen Sie die Parameter beim Aufruf von super der übergeordneten Komponente an den Konstruktor der übergeordneten Komponente übergeben

Wenn Sie dies nicht verwenden oder Parameter im Konstruktor benötigen Sie nicht super ; Da React dies für Sie erledigt hat, ist die Bindung von Requisiten

Routenparameterübergabe

Installieren Sie npm install reagieren-router-dom --save-dev

Definieren Sie die Route (normalerweise außerhalb platziert)

 <HashRouter> 
    <Switch> 
        <Route exact path="/" component={Home}/> 
        <Route exact path="/detail" component={Detail}/> 
    </Switch> 
</HashRouter>
Nach dem Login kopieren

Wenn die Seite beim Springen

<li  onClick={el => this.props.history.push({
   pathname:&#39;/detail&#39;,
      state:{id:3}
})}>
</li>
Nach dem Login kopieren

receive Die übergebenen Daten können über this.props.history.location abgerufen werden

Bei der Übergabe von Routenparametern kann dieses Problem auftreten, d Definiert enthält Requisiten zum Standortverlauf

Die auf der Route bereitgestellte Komponente ist normalerweise Container.js. Im Allgemeinen trennen wir die UI.js-Komponente und klicken hier, um zu springen. Es ist kein Standortverlaufsabgleich erforderlich

Die UI-Komponenten-Requisiten verwenden die höherwertige Komponente mit Router

Statusförderung

, um den Status, den mehrere Komponenten gemeinsam nutzen müssen, auf die gemeinsame übergeordnete Komponente zu befördern, die ihnen am nächsten liegt, und die übergeordnete Komponente verteilt ihn dann über Requisiten an die untergeordnete Komponente

Kontext

Wenn eine Komponente einen bestimmten Status in ihrem eigenen Kontext speichert, können alle untergeordneten Komponenten unter dieser Komponente auf diesen Status zugreifen, ohne dass Zwischenkomponenten übertragen werden müssen, und auf die übergeordnete Komponente dieser Komponente kann nicht zugegriffen werden

class Index extends Component {
  static childContextTypes = {
    themeColor: PropTypes.string
  }

  constructor () {
    super()
    this.state = { themeColor: &#39;red&#39; }
  }

  getChildContext () {
    return { themeColor: this.state.themeColor }
  }

  render () {
    return (
      <div>
        <Header />
        <Main />
      </div>
    )
  }
}
通过getChildContext()将属性传递给所有的子孙组件
提供 context 的组件必须提供 childContextTypes 作为 context 的声明和验证。
Nach dem Login kopieren
class Title extends Component {
  static contextTypes = {
    themeColor: PropTypes.string
  }

  render () {
    return (
      <h1 style={{ color: this.context.themeColor }}>标题</h1>
    )
  }
}
子组件要获取 context 里面的内容的话,就必须写 contextTypes 来声明和验证你需要获取的状态的类型,它也是必写的,如果你不写就无法获取 context 里面的状态。
Title 想获取 themeColor,它是一个字符串,我们就在 contextTypes 里面进行声明。
Nach dem Login kopieren
Wir stellen Redux vor

Redux bietet einen vorhersehbaren Zustandsverwaltungsmechanismus für React Sie Andere Komponenten

Andere Komponenten können ihre eigenen Ansichten aktualisieren, indem sie den Status im Store abonnieren

Verwandte Empfehlungen:

Reaktions-Tutorial

Das obige ist der detaillierte Inhalt vonWelche Möglichkeiten gibt es, Parameter in React zu übergeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:cnblogs.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!