verified
という小道具を各マップ関数で渡したいと思っています。Javascript/Reactのmap()への引数として関数と変数を渡す
UPDATE:
がrenderContinentsにverified
を渡すには動作しますが、ときに、このようrenderCountryするパラメータを追加します。
{continent.countries.map(renderCountry(null, verified))}
私の出力が空白です。しかし、これは動作しませんか?
更新コード:
const renderCities = cities => {
return (
<div>
<label>
<input
onChange={onChange}
type="checkbox"/>
{cities.name}
</label>
</div>
);
};
const renderCountries = ({country, verified}) => {
console.log("came to country");
return (
<div className="city-location">
<label>
<input
onChange={onChange}
type="checkbox"/>
{country.name}
</label>
{country.cities.map(renderCities)}
</div>
);
};
function onChange(e) {
console.log('checkbox verified:', (e.target.verified));
}
class AreasComponent extends Component {
constructor(props) {
super(props);
this.state = {
};
this.renderContinents = this.renderContinents.bind(this);
}
componentWillMount() {
this.props.fetchAllAreas();
}
renderContinents(verified, continent) {
console.log("came to continent");
return(
<div className="continent-location">
<label>
<input
onChange={onChange}
type="checkbox"/>
{continent.name}
</label>
{continent.countries.map(renderCountries(null, verified))}
</div>
)
}
render() {
if (!this.props.verified || !this.props.areas) {
return <div>Loading Areas...</div>
}
return(
<div>
{this.props.areas.map(this.renderContinents.bind(this, this.props.verified))}
</div>
);
}
}
function mapDispatchToProps(dispatch){
return bindActionCreators({ fetchAllAreas, checkArea}, dispatch);
}
function mapStateToProps(state) {
return { areas: state.areas.all,
verified:state.areas.verified
};
}
export default connect(mapStateToProps, mapDispatchToProps)(AreasComponent);
私の他の問題はonChange(e)
機能です。それはグローバルなので、チェックボックスをクリックすると動作しますが、onChangeをクリックすると、パラメータを取り込み、アクションcheckArea
を送出できるようにしたいと思います。これは、バインドされている必要があります。パラメータとして供給される。私はこれを試しました:
{this.props.areas.map(this.renderContinents.bind(this, this.props.verified, this.props.checkArea))}
しかし、それは空白の結果を返します。 map()パラメータに関数を送ることは可能ですか?また、renderCountry/renderCityをパラメータで動作させる方法がありますか?
これはhttp://stackoverflow.com/q/3800512/497418の複製です。タイトルがあなたを騙さないようにしてください。呼び出される関数を渡すのではなく、関数を直ちに呼び出すという根本的な問題の赤いニシンです。 – zzzzBov