私は以下の2つのコンポーネントを持っていますアプリケーションとその子ツールバーです。入力値を取得して、親に返す
ツールバーにはフォームと入力が含まれていますが、入力からAppコンポーネントの状態に値を渡したいと思いますが、使用が確認されたとき(送信時や入力時など)にのみ行います。
プロキシとイベントオブジェクトを取得するだけで現在の試行は機能しません(これは意味があります)。どうすればいい?
私はReduxなどを使用していません。
App.js
import React, {Component} from 'react'
import {render} from 'react-dom'
import {} from './styles/base.scss'
import ImageContainer from './components/Images'
import Toolbar from './components/Toolbar'
export default class App extends Component {
constructor(props) {
super(props);
// http://www.cloudypoint.com/Tutorials/discussion/javascript-how-to-update-parents-state-in-react/
this.setFolderPathHandler = this.setFolderPathHandler.bind(this);
}
setFolderPathHandler(e) {
e.preventDefault();
console.log(arguments);
// this.setState({
// xyz: input
// });
}
render() {
return (
<div>
<Toolbar setFolderPathHandler={this.setFolderPathHandler} />
<ImageContainer />
</div>
)
}
}
ツールバー/ index.js
import React, { Component } from 'react';
import path from 'path';
class Toolbar extends Component {
render() {
return (
<nav className="toolbar">
<div className="column">
{/* START used to be it's own component */}
<form onSubmit={this.props.setFolderPathHandler}>
<div className="form-field">
<input type="text" className="folder-path" ref={(input) => this.input = input} />
<button><i className="fa fa-fw fa-2x fa-folder-open" aria-hidden="true"></i></button>
</div>
</form>
{/* END used to be it's own component */}
</div>
<div className="column">
<button><i className="fa fa-fw fa-2x fa-chevron-left" aria-hidden="true"></i></button>
<button><i className="fa fa-fw fa-2x fa-chevron-right" aria-hidden="true"></i></button>
</div>
</nav>
);
}
}
export default Toolbar;
私は別の成分として入力を持っていたが、それは私にはあまりにも混乱した(私は新しいです反応する)。
'.folder-path'はあなたが関係する入力ですか?コンポーネント全体を1つの要素(ラッパーかもしれない)に減らしても同じ質問でしょうか?それは少し簡単にアプローチ(と再現)になります –
私はあなたがこのようにonSummitメソッドを変更する必要があると思います: 'onSubmit = {()=> this.props.setFolderPathHandler()}'。アイデアは、親のメソッドを実行することです –