我有一个React组件
export function sendAlert(msg) {
showAlert() //How to call in normal function a function from React.Component
}
export class Alert extends React.Component {
showAlert = () => {
alert("a")
};
render() {
return (
<div>
<h1>Component</h1>
</div>
)
}
}
可以调用从React.Component
答案 0 :(得分:2)
从技术上讲,你可以这样做,但是你应该提取公共函数并从两个地方调用它。
您可以通过创建组件实例来实现:
export function sendAlert(msg) {
const alert = new Alert();
alert.showAlert()
}
但是,您应该提取代码:
function commonShowAlert() {
alert("a");
}
export function sendAlert(msg) {
commonShowAlert();
}
export class Alert extends React.Component {
showAlert = () => {
commonShowAlert();
};
...
...
}
答案 1 :(得分:1)
只有当您的方法是静态方法时,才能这样做。
您可以按如下方式在类中声明您的方法:
static showAlert() { alert("a"); }
然后您可以在CLASSNAME.METHOD_NAME
外部访问它例如:Alert.showAlert();
正如@Davin在他的回答中所说,你可以在外面声明它(这也是我的建议,更干净的代码),但是如果你必须在课堂内声明它,那么你有静态选项。
答案 2 :(得分:0)
如果您的方法不使用Matmult2<- cxxfunction(signature( a="NumericMatrix",b="NumericMatrix"), plugin="RcppArmadillo",includes = rcpp_inc,
body='
Rcpp::NumericMatrix verg(a);
int n = verg.nrow();
arma::mat A = Rcpp::as< arma::mat >(a);
arma::mat B = Rcpp::as< arma::mat >(b);
arma::mat a11 = A(span(0,(n/2)-1), span(0,(n/2)-1));
arma::mat a12 = A(span(0,(n/2)-1), span((n/2),n-1));
arma::mat a21 = A(span((n/2),n-1), span(0,(n/2)-1));
arma::mat a22 = A(span((n/2),n-1), span((n/2),n-1));
arma::mat b11 = B(span(0,(n/2)-1), span(0,(n/2)-1));
arma::mat b12 = B(span(0,(n/2)-1), span((n/2),n-1));
arma::mat b21 = B(span((n/2),n-1), span(0,(n/2)-1));
arma::mat b22 = B(span((n/2),n-1), span((n/2),n-1));
if ( n < 780) return Rcpp::wrap( A * B );
arma::mat P1(Matmult2(a11,(b12-b22)));
arma::mat P2(Matmult2((a11+a12),(b22)));
arma::mat P3(Matmult2((a21+a22),(b11)));
arma::mat P4(Matmult2((a22),(b21-b11)));
arma::mat P5(Matmult2((a11+a22),(b11+b22)));
arma::mat P6(Matmult2((a12-a22),(b21+b22)));
arma::mat P7(Matmult2((a11-a21),(b11+b12)));
arma::mat c11((P5+P4-P2+P6));
arma::mat c12((P1+P2));
arma::mat c21((P3+P4));
arma::mat c22((P5+P1-P3-P7));
mat C1 = join_rows(c11, c12);
mat C2 = join_rows(c21, c22);
mat C = join_cols(C1, C2);
return Rcpp::wrap( C );
,则可以使用静态方法
this
-
import Alert from '../somewhere';
export function sendAlert(msg) {
Alert.showAlert() // <<--- use Alert.method() to call a static method
}