我试图使用“ bind”将自定义组件方法绑定到组件,因为在自定义组件方法中,“ this”实际上为空。如果这听起来很愚蠢,我感到抱歉,但是我们不能将第一个参数作为组件本身传递给bind方法,而不是将第一个参数作为“ this”传递吗?因为这还是指组件本身。

        function FriendsList(props){
            return(
            <ul>
                {props.list.map((name)=>(
                    <li key={name}>
                        <span>{name}</span>
                        <button onClick=
                         {()=>props.onRemoveFriend(name)}>Remove</button>
                    </li>
                    ))}
            </ul>
            )


        }
        class App extends React.Component{
            constructor(props){
                super(props)

                this.state={
                    friends:['Batman','Thor','Hulk']
                }
                **this.handleRemoveFriend=this.handleRemoveFriend.bind(this)**
            }
            handleAddFriend(){

            }
            handleRemoveFriend(name){
                  this.setState((currentState)=>{
                    return{

                friends:currentState.friends.filter((friend)=>friend!==name)
                    }
                  })
            }
            render(){
                return(
                    <div>
                        <FriendsList
                        list={this.state.friends}
                        onRemoveFriend={this.handleRemoveFriend}
                        />
                    </div>
                )
            }

        }

        ReactDOM.render(<App />, document.getElementById('app'))


    </script>```

instead of "this.handleRemoveFriend=this.handleRemoveFriend.bind(this)". Can't we write "this.handleRemoveFriend=this.handleRemoveFriend.bind(App)"?
It gives me an error when I do so, saying this.setstate is not a function.

最佳答案

你不能。 this是您的类的实例,App是类本身。

关于javascript - 在使用BIND()将自定义组件方法绑定(bind)到组件时,是否可以将第一个参数作为组件本身传递?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57742820/

10-11 03:53
查看更多