Javascript 特定组件的触发函数-ReactJS
我的场景是:我有一个项目列表,每个项目呈现一个组件。每次单击其中一个项目时,我都会渲染另一个组件(非常类似于模式),将当前项目作为道具传递。在模态组件内部有一个on按钮,单击该按钮时,应该会在创建它的组件上触发回一个函数 我的物品是:Javascript 特定组件的触发函数-ReactJS,javascript,reactjs,Javascript,Reactjs,我的场景是:我有一个项目列表,每个项目呈现一个组件。每次单击其中一个项目时,我都会渲染另一个组件(非常类似于模式),将当前项目作为道具传递。在模态组件内部有一个on按钮,单击该按钮时,应该会在创建它的组件上触发回一个函数 我的物品是: const items = [ { id: 1, data: "some data" }, { id: 2, data: "some data"
const items = [
{
id: 1,
data: "some data"
}, {
id: 2,
data: "some data"
}, {
id: 3,
data: "some data"
}
]
将每个项目动态创建为组件:
items.map(item => {
return { key: item.id, content: <Item key={item.id} ItemObject={item}/> }
});
在Actions组件中有一个按钮,单击该按钮时,应该会在调用Actions的项中触发回updateStatus
Actions.js
export function _updateStatus(newFlags) {
this.setState({ flags: newFlags });
}
export default class SystemUnit extends React.Component {
constructor(props) {
super(props);
this.state = { flags: [] };
_updateStatus = _updateStatus.bind(this);
this.handleClick = this.handleClick.bind(this);
}
handleClick() {
ReactDOM.render(<Actions Item={this.props.ItemObject} />, document.getElementsByClassName("actions-wrapper")[0]);
}
}
import { _updateStatus } from './Item';
export default class Actions extends React.Component {
constructor(props) {
super(props);
this.state = {flags: []}
}
render() {
<button onClick={() => { _updateStatus(this.state.flags) }}>Finish</button>
}
}
从'./Item'导入{u updateStatus};
导出默认类操作扩展React.Component{
建造师(道具){
超级(道具);
this.state={flags:[]}
}
render(){
{{u updateStatus(this.state.flags)}>Finish
}
}
但是,该按钮会在列表的最后一项上触发该方法,而不是在呈现它的组件上。在这个例子中,我有三个项目,无论单击哪一个,Action component按钮都会触发项目3上的cange
如何为Action组件指定在呈现它的Item组件上触发updateStatus方法?通过以下行从组件本身导入函数:
import { _updateStatus } from './Item';
这就是为什么要获得最后渲染的项的函数
请尝试将函数作为参数传递:
ReactDOM.render(<Actions Item={this.props.ItemObject} updateStatus={this._updateStatus} />, document.getElementsByClassName("actions-wrapper")[0]);
ReactDOM.render(,document.getElementsByClassName(“操作包装器”)[0]);
以及在以下操作中的访问权限:
render() {
<button onClick={() => { this.props.updateStatus(this.state.flags) }}>Finish</button>
}
render(){
{this.props.updateStatus(this.state.flags)}>Finish
}
谢谢!成功了。从组件本身导入函数是我在某个论坛上看到的。不过,这种方式更干净。是的,利用道具的力量。快乐编码!