1
renderList()
には、クリックしたコンテンツを削除する削除ボタンがあります。私はsetState
をどこに置くかわからないので、onClick()
の中に入れます。これは機能しません。私はこれを正しくやっているのか、これを解決する良い方法があるのかを知りたい。ボタンをクリックしてページを表示します
onClickの機能
onClick={() => {
this.props.deleteBook(list.book_id);
this.setState({delete: list.book_id});
}}>
mapStateToProps
の使用に基づいてReact.js
import React, { Component } from 'react';
import { connect } from 'react-redux';
import { selectUser } from '../actions/index.js';
import { deleteBook } from '../actions/index.js';
import _ from 'lodash';
class myPage extends Component {
constructor(props) {
super(props);
this.state = {
delete: 0
}
}
componentWillMount() {
this.props.selectUser(this.props.params.id);
}
renderList() {
return this.props.list.map((list) => {
return (
<li className='book-list'
key={list.book_id}>
{list.title}
<button
value={this.state.delete}
onChange={this.onClickChange}
onClick={() => {
this.props.deleteBook(list.book_id);
this.setState({delete: list.book_id});
}}>
Delete
</button>
</li>
);
})
}
render() {
const {user} = this.props;
const {list} = this.props;
if(user) {
return(
<div>
<h2>Date Joined: {user.user.joined}</h2>
<h1>My Page</h1>
<h2>Username: {user.user.username}</h2>
<div>My Books:
<h1>
{this.renderList()}
</h1>
</div>
</div>
)
}
}
}
function mapStateToProps(state) {
return {
user: state.user.post,
list: state.list.all
}
}
export default connect(mapStateToProps, { selectUser, deleteBook })(myPage);
コンポーネントの状態を 'this.state = {delete:0}'に初期化しました。これは削除されるMyPageコンポーネントまたはブックが削除されることを表しますか? (また、あなたのクラス 'myPage'は' MyPage'でなければなりません) – styfle
@styfleこれはダミーのデータであり、実際に何もしません。私はthis.state = {delete:0}を置くだけで、削除ボタンをクリックするとコンポーネントが再レンダリングされます。これは動作しますが、私は別のリンクに行き、本のリストがなくなるまで戻ってくる必要があります。私は削除をクリックしてコンポーネントをレンダリングし、選択したブックリストが消えるメソッドを探したかった。 – Yh1234
私はsetStateがコンポーネントを再レンダリングすると考えましたが、レンダリングされていないようです。 – Yh1234