Передача данных по щелчку мыши от дочернего компонента к родительскому компоненту реагирует

#javascript #reactjs

Вопрос:

Я новичок в том, чтобы реагировать и пытаться передавать данные (директор, недиректор) из моего дочернего функционального компонента в компонент родительского класса.

Мой код приведен ниже, что мне нужно сделать, чтобы он работал?

Родительский компонент класса

 export default class ProfileEditor extends React.Component<IProfileEditorProps, IProfileEditorState> {
    
      constructor(props: IProfileEditorProps) {
        super(props);
        this.state = {
          data: null,
        }
         this.updateProfile = this.updateProfile.bind(this);
      }

    public updateProfile(director, nonDirector) {

        console.log('hello', director, nonDirector);

     }

      <MultiSelect
        options={ profile?.Declarations.length == 0 ? countries : this.combineProfileAndCountrys() }   
        updateProfile={updateProfile()}
      />
 

Детский функциональный компонент

 export const MultiSelect = ({ options, updateProfile }) => { 

const [nonDirector, setNonDirector] = React.useState();
const [director, setDirector] = React.useState();

<PrimaryButton text='Save' onClick={ updateProfile(nonDirector, director) } />
    </Fragment>
);
 

Ответ №1:

В вашем родительском компоненте вы не должны вызывать функцию в onClick обработчике. Вместо этого вы хотите передать ему ссылку на функцию.

 updateProfile={updateProfile}
 

Аналогичная проблема возникает в вашем дочернем компоненте. Вы не хотите вызывать функцию и возвращать ее результаты обработчику, вы хотите назначить обработчику функцию, которая затем может вызвать updateProfile функцию при ее срабатывании.

 onClick={() => updateProfile(nonDirector, director)}
 

Комментарии:

1. Спасибо тебе, Энди!