Saya melihat bahwa mapStateToProps
dan mapDispatchToProps
fungsi yang diteruskan ke connect
fungsi di Redux mengambil ownProps
argumen kedua.
[mapStateToProps(state, [ownProps]): stateProps] (Function):
[mapDispatchToProps(dispatch, [ownProps]): dispatchProps] (Object or Function):
Untuk apa [ownprops]
argumen opsional ?
Saya mencari contoh tambahan untuk memperjelas karena sudah ada di dokumen Redux
redux
react-redux
akan ada kode
sumber
sumber
Jawaban:
Jika
ownProps
parameter ditentukan, react-redux akan meneruskan props yang diteruskan ke komponen ke dalamconnect
fungsi Anda . Jadi, jika Anda menggunakan komponen yang terhubung seperti ini:import ConnectedComponent from './containers/ConnectedComponent' <ConnectedComponent value="example" />
Bagian
ownProps
dalam AndamapStateToProps
danmapDispatchToProps
fungsi akan menjadi objek:{ value: 'example' }
Dan Anda bisa menggunakan objek ini untuk memutuskan apa yang akan dikembalikan dari fungsi tersebut.
Misalnya, pada komponen posting blog:
// BlogPost.js export default function BlogPost (props) { return <div> <h2>{props.title}</h2> <p>{props.content}</p> <button onClick={props.editBlogPost}>Edit</button> </div> }
Anda dapat mengembalikan pembuat tindakan Redux yang melakukan sesuatu ke pos tertentu itu:
// BlogPostContainer.js import { bindActionCreators } from 'redux' import { connect } from 'react-redux' import BlogPost from './BlogPost.js' import * as actions from './actions.js' const mapStateToProps = (state, props) => // Get blog post data from the store for this blog post ID. getBlogPostData(state, props.id) const mapDispatchToProps = (dispatch, props) => bindActionCreators({ // Pass the blog post ID to the action creator automatically, so // the wrapped blog post component can simply call `props.editBlogPost()`: editBlogPost: () => actions.editBlogPost(props.id) }, dispatch) const BlogPostContainer = connect(mapStateToProps, mapDispatchToProps)(BlogPost) export default BlogPostContainer
Sekarang Anda akan menggunakan komponen ini seperti ini:
import BlogPostContainer from './BlogPostContainer.js' <BlogPostContainer id={1} />
sumber
ownProps mengacu pada props yang diturunkan oleh orang tua.
Jadi, misalnya:
Parent.jsx:
Child.jsx:
sumber
Jawaban goto-bus-stop itu bagus, tetapi satu hal yang perlu diingat adalah, menurut penulis redux, Abramov / gaearon, menggunakan ownProps dalam fungsi-fungsi itu membuatnya lebih lambat karena mereka harus memasang kembali pembuat tindakan ketika alat peraga berubah.
Lihat komentarnya di tautan ini: https://github.com/reduxjs/redux-devtools/issues/250
sumber