Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs onClick不在react中的form元素中工作,但在button中工作?_Reactjs_Forms_Onclick - Fatal编程技术网

Reactjs onClick不在react中的form元素中工作,但在button中工作?

Reactjs onClick不在react中的form元素中工作,但在button中工作?,reactjs,forms,onclick,Reactjs,Forms,Onclick,试图让onClick函数在react with a form中工作,但是,它不工作,但使用按钮可以 以下代码适用于按钮,但不适用于输入。我想知道我可能是什么 <CustomInput onChange={(v) => setLastName(v)} label="Last Name*" invalid={ (lastName ||

试图让onClick函数在react with a form中工作,但是,它不工作,但使用按钮可以

以下代码适用于按钮,但不适用于输入。我想知道我可能是什么

          <CustomInput
              onChange={(v) => setLastName(v)}
              label="Last Name*"
              invalid={
                (lastName || validate) &&
                !yup.string().required().isValidSync(lastName)
              }
              value={lastName}
              onClick={() => alert('hello')}
            />
            <button onClick={() => alert('hello')}>Click me!</button>
setLastName(v)}
label=“姓氏*”
无效的={
(姓氏| |验证)&&
!yup.string().required().isValidSync(lastName)
}
值={lastName}
onClick={()=>alert('hello')}
/>
警报('hello')}>点击我!

这可能是因为您在CustomComponent中的任何位置都没有使用onClick道具。当您将onClick道具传递给按钮时,React知道它必须创建一个按钮,并将onClick事件侦听器附加到该按钮,当单击该按钮时,该侦听器将触发您的警报。但是,当您将onClick属性传递给CustomComponent时,由于React天生不知道CustomComponent是什么,因此它不会立即创建组件。它首先访问CustomComponent的源文件,并根据CustomComponent的render方法的返回创建DOM元素。 可以访问传递给CustomComponent的任何道具。以这种方式传递道具时,React假定onClick只是道具的另一个名称,并且不理解您希望它在CustomComponent的render方法的return语句中将eventListener附加到包装器元素。您必须手动附加此内部CustomComponent

比如说,

CustomButton.js

import React from 'react';

const CustomButton = props => {
    return (
        <div>
            <button>Click me</button>
        </div>
    );
};

export default CustomButton;

import React from 'react';

const CustomButton = props => {
    return (
        <div onClick={props.onClick}>
            <button>Click me</button>
        </div>
    );
};

export default CustomButton;

import React from 'react';

const CustomButton = props => {
    return (
        <div>
            <button onClick={props.anyprop}>Click me</button>
        </div>
    );
};

export default CustomButton;

从“React”导入React;
const CustomButton=props=>{
返回(
点击我
);
};
导出默认自定义按钮;
App.js

import './App.css';
import CustomButton from './CustomButton';

function App() {
  return (
    <div className="App">
      <CustomButton onClick={()=>alert("Clicked")}/>
    </div>
  );
}

export default App;

import './App.css';
import CustomButton from './CustomButton';

function App() {
  return (
    <div className="App">
      <CustomButton anyprop={()=>alert("Clicked")}/>
    </div>
  );
}

export default App;

import'/App.css';
从“/CustomButton”导入CustomButton;
函数App(){
返回(
警报(“单击”)}/>
);
}
导出默认应用程序;
在上述情况下,单击按钮时不会发生任何事情,因为CustomButton.js中没有onClick

import React from 'react';

const CustomButton = props => {
    return (
        <div>
            <button>Click me</button>
        </div>
    );
};

export default CustomButton;

import React from 'react';

const CustomButton = props => {
    return (
        <div onClick={props.onClick}>
            <button>Click me</button>
        </div>
    );
};

export default CustomButton;

import React from 'react';

const CustomButton = props => {
    return (
        <div>
            <button onClick={props.anyprop}>Click me</button>
        </div>
    );
};

export default CustomButton;

但是,如果这样做:

CustomButton.js

import React from 'react';

const CustomButton = props => {
    return (
        <div>
            <button>Click me</button>
        </div>
    );
};

export default CustomButton;

import React from 'react';

const CustomButton = props => {
    return (
        <div onClick={props.onClick}>
            <button>Click me</button>
        </div>
    );
};

export default CustomButton;

import React from 'react';

const CustomButton = props => {
    return (
        <div>
            <button onClick={props.anyprop}>Click me</button>
        </div>
    );
};

export default CustomButton;

从“React”导入React;
const CustomButton=props=>{
返回(
点击我
);
};
导出默认自定义按钮;
现在,单击按钮时(或者更确切地说,单击div时)将显示警报

传递给CustomButton的道具名称也不需要再次单击,因为在自定义组件上使用时,该词没有任何意义

App.js

import './App.css';
import CustomButton from './CustomButton';

function App() {
  return (
    <div className="App">
      <CustomButton onClick={()=>alert("Clicked")}/>
    </div>
  );
}

export default App;

import './App.css';
import CustomButton from './CustomButton';

function App() {
  return (
    <div className="App">
      <CustomButton anyprop={()=>alert("Clicked")}/>
    </div>
  );
}

export default App;

import'/App.css';
从“/CustomButton”导入CustomButton;
函数App(){
返回(
警报(“单击”)}/>
);
}
导出默认应用程序;
CustomButton.js

import React from 'react';

const CustomButton = props => {
    return (
        <div>
            <button>Click me</button>
        </div>
    );
};

export default CustomButton;

import React from 'react';

const CustomButton = props => {
    return (
        <div onClick={props.onClick}>
            <button>Click me</button>
        </div>
    );
};

export default CustomButton;

import React from 'react';

const CustomButton = props => {
    return (
        <div>
            <button onClick={props.anyprop}>Click me</button>
        </div>
    );
};

export default CustomButton;

从“React”导入React;
const CustomButton=props=>{
返回(
点击我
);
};
导出默认自定义按钮;

只要在CustomButton和App中传递的道具名称匹配,这也可以正常工作。

CustomInput
component的源代码放入CustomInput组件中。如果在CustomInput组件中没有onClick方法,它将不会做任何事情。