I have a Meteor application with React where I have a component called ChatManager
. The component imports my chatrooms.js
API for publishing my chatrooms
collection. It also imports my EditChatRoom
component and my ChatRoomRecord
component.
Basically here is a summary of the file structure of relevant code:
-imports
-api
-chatrooms.js
-ui
-chatmanager
-ChatRoomRecord.jsx
-EditChatRoom.jsx
ChatManager.jsx
My ChatRoomRecord
component has an onClick
function which works successfully at logging the click and the chatroom
prop.
My EditChatRoom
is a modal
where id="editChatRoomModal"
The ChatManager
component is the one that holds both the ChatRoomRecord
and the EditChatRoom
components.
How can I send that chatroom
prop that I've registered through to the EditChatRoom
component? And on a side note, how could I open the editChatRoomModal
using React?
Help is much appreciated! Thanks!
Edit: Added Information
Here is a basic representation of my ChatManager
Component:
class ChatManager extends Component {
renderChatRoomRecords() {
return this.props.chatrooms.map((chatroom) => (
<ChatRoomRecord key={chatrooom._id} chatroom={chatroom} />
))
}
render() {
return (
<div>
<EditChatRoom />
<table>
<tbody>
{this.renderChatRoomRecords()}
</tbody>
</table>
</div>
)
}
}
ChatManager.PropTypes = {
chatrooms: PropTypes.array.isRequired
}
export default createContainer(() => {
Meteor.subscribe('chatrooms')
return { chatrooms: ChatRooms.find({}).fetch() }
}, ChatManager)
Then here is my ChatRoomRecord
component:
export class ChatRoomRecord extends Component {
constructor(props) {
super(props)
this.handleClick = this.handleClick.bind(this)
}
handleClick(event) {
event.preventDefault()
console.log("Click registered successfully: " + this.props.chatroom._id)
}
render() {
return (
<tr onClick{this.handleClick}>
{/* This code isn't relevant to the problem */}
</tr>
)
}
}
ChatRoomRecord.PropTypes = {
chatroom: PropTypes.object.isRequired
}
This works greats so there's no problem in the mapping and the click event works where it registers the click and shows the chatroom._id
that was clicked.
Here's my EditChatRoom
component:
export class EditChatRoom extends Component {
render() {
return (
<div className="modal fade" id="editChatRoomModal" tabIndex="-1" role="dialog">
{/* This code isn't relevant to the problem */}
</div>
)
}
}
I need to open this modal and pass through the chatroom
that was clicked in my ChatRoomRecord
component.
Hope this better explains the problem.