Faits:
Faits:
A. F._, née en 1965, mariée et mère de trois enfants, a travaillé en qualité de blanchisseuse à raison de 60 % d'un horaire de travail habituel, soit cinq heures trente par jour, cinq jours par semaine. Simultanément, elle exerçait une activité accessoire en qualité de nettoyeuse à raison de deux heures par jour, cinq jours par semaine.
Consulté le 17 juillet 1997 par l'assurée qui se plaignait de douleurs au poignet droit, le docteur P._, chef de clinique adjoint à l'unité de chirurgie de la main de l'Hôpital X._, a posé le diagnostic d'ostéonécrose aseptique du semi-lunaire droit (maladie de Kienböck) au stade III B (rapport du 18 juillet 1997). Le 25 novembre 1997, ce médecin a procédé à une intervention consistant en une dénervation du carpe, associée à une styloïdectomie radiale. Il a fait état d'une incapacité de travail entière depuis le 25 novembre 1997.
Le 13 juillet 1998, l'assurée a présenté une demande tendant à l'octroi d'une rente de l'assurance-invalidité. Après avoir recueilli divers avis médicaux, l'Office cantonal de l'assurance-invalidité du canton de Genève a mis en oeuvre un stage d'observation professionnelle qui a eu lieu du 8 octobre au 2 décembre 2001 au Centre d'intégration professionnelle, à Genève (CIP), fonctionnant comme Centre d'observation professionnelle de l'assurance-invalidité (COPAI).
Par décision du 4 mars 2002, l'office AI a nié le droit de l'assurée à une rente d'invalidité, motif pris que le taux d'invalidité constaté (10 %) était insuffisant pour ouvrir droit à une telle prestation.
Par décision du 4 mars 2002, l'office AI a nié le droit de l'assurée à une rente d'invalidité, motif pris que le taux d'invalidité constaté (10 %) était insuffisant pour ouvrir droit à une telle prestation.
B. Saisi d'un recours contre cette décision, le Tribunal cantonal des assurances sociales du canton de Genève l'a rejeté par jugement du 30 mars 2004.
B. Saisi d'un recours contre cette décision, le Tribunal cantonal des assurances sociales du canton de Genève l'a rejeté par jugement du 30 mars 2004.
C. F._ interjette recours de droit administratif contre ce jugement, dont elle demande l'annulation, en concluant implicitement à l'octroi d'une demi-rente.
L'Office AI conclut au rejet du recours. De son côté, l'Office fédéral des assurances sociales n'a pas présenté de déterminations.
Considérant en droit:
Considérant en droit:
1. 1.1 Le litige porte sur le droit éventuel de la recourante à une rente de l'assurance-invalidité.
1.2 La loi fédérale sur la partie générale du droit des assurances sociales du 6 octobre 2000 (LPGA) est entrée en vigueur le 1er janvier 2003, entraînant la modification de nombreuses dispositions légales dans le domaine de l'assurance-invalidité. Cependant, le cas d'espèce reste régi par les dispositions de la LAI en vigueur jusqu'au 31 décembre 2002, eu égard au principe selon lequel les règles applicables sont celles en vigueur au moment où les faits juridiquement déterminants se sont produits (ATF 127 V 467 consid. 1). En outre, le Tribunal fédéral des assurances apprécie la légalité des décisions attaquées, en règle générale, d'après l'état de fait existant au moment où la décision litigieuse a été rendue (ATF 121 V 366 consid. 1b).
Pour les mêmes motifs, les dispositions de la novelle du 21 mars 2003 modifiant la LAI (4ème révision), entrée en vigueur le 1er janvier 2004 (RO 2003 3852) ne sont pas non plus applicables.
Pour les mêmes motifs, les dispositions de la novelle du 21 mars 2003 modifiant la LAI (4ème révision), entrée en vigueur le 1er janvier 2004 (RO 2003 3852) ne sont pas non plus applicables.
2. La recourante a travaillé en qualité de blanchisseuse à raison de cinq heures trente par jour, cinq jours par semaine, et exerçait en outre une activité accessoire en qualité de nettoyeuse à raison de deux heures par jour, cinq jours par semaine. Globalement, elle consacrait ainsi trente-sept heures trente par semaine à l'exercice d'activités lucratives. Compte tenu d'une durée hebdomadaire usuelle moyenne de 41,9 heures en 1998 (La Vie économique, 10/2004 p. 90, tableau B 9.2), l'intéressée exerçait une activité lucrative à raison de 90 % d'un horaire usuel et consacrait le reste de son temps (10 %) à ses travaux habituels au sens de l'art. 5 al. 1 LAI. L'administration et la juridiction cantonale auraient donc dû évaluer l'invalidité en procédant à une comparaison des revenus selon l'art. 28 al. 2 LAI pour la part de l'activité lucrative et en établissant l'empêchement dans l'accomplissement des travaux habituels selon l'art. 27 RAI pour cette dernière part (méthode mixte d'évaluation de l'invalidité).
Cependant, bien que cette méthode n'ait pas été appliquée et qu'en particulier, l'administration n'ait pas effectué une enquête économique sur le ménage, il n'est pas nécessaire, étant donné les considérations ci-après, de renvoyer la cause à la juridiction cantonale ou à l'administration pour nouvelle décision après instruction complémentaire.
Cependant, bien que cette méthode n'ait pas été appliquée et qu'en particulier, l'administration n'ait pas effectué une enquête économique sur le ménage, il n'est pas nécessaire, étant donné les considérations ci-après, de renvoyer la cause à la juridiction cantonale ou à l'administration pour nouvelle décision après instruction complémentaire.
3. 3.1 La juridiction cantonale a considéré que malgré l'affection dont elle souffre au poignet droit, la recourante a toujours une capacité résiduelle de travail de 65 % dans l'activité à laquelle s'était référé l'office intimé, à savoir un travail léger dans une activité répétitive. Elle s'est fondée pour cela sur les conclusions du rapport du COPAI qui reposaient sur un avis du docteur L._, spécialiste en médecine interne et médecin-conseil du COPAI, ainsi que sur l'observation de la capacité professionnelle de l'assurée. Dans un rapport du 16 décembre 2001, ce médecin a attesté que l'intéressée disposait, dans une activité adaptée, d'une capacité résiduelle de travail de l'ordre de 65 % au minimum. Il exprimait toutefois son pessimisme en raison des difficultés de communication et de l'absence de motivation de l'assurée, lesquelles permettaient difficilement d'envisager une reprise du travail effective.
De son côté, la recourante reproche aux premiers juges de n'avoir pas tenu compte des conclusions du docteur P._. Ce médecin a indiqué que les troubles au poignet empêchaient certes l'assurée d'exercer son ancienne activité de blanchisseuse. Toutefois, l'intéressée était encore capable, malgré son handicap, d'exercer durant toute la journée une activité adaptée dans les domaines de la manutention légère, la vente ou la réception, mais avec un rendement de 50 % seulement (rapport du 17 mai 2000).
3.2 La juridiction cantonale s'est écartée de l'avis du docteur P._ pour se fonder sur les conclusions du docteur L._ en se référant à la jurisprudence selon laquelle il faut accorder plus de poids aux constatations d'un spécialiste qu'à l'appréciation de l'incapacité de travail par le médecin de famille qui, dans le doute, est plutôt favorable au patient, étant donné les liens de confiance qui existent entre eux (ATF 125 V 353 consid. 3b/cc et les références). Par ailleurs, les premiers juges ont considéré que les conclusions du docteur L._ étaient corroborées par les observations effectuées au COPAI.
En l'occurrence, la juridiction cantonale était fondée à s'écarter du point de vue du médecin traitant et à se référer aux conclusions du spécialiste d'un centre d'observation de l'assurance-invalidité (cf. RCC 1988 p. 504 consid. 2). L'appréciation du docteur L._ est confirmée non seulement par les observations effectuées au COPAI, mais également par les conclusions du docteur S._, spécialiste en chirurgie, lequel a été appelé à plusieurs reprises par l'assurance-maladie de la recourante à se prononcer en qualité d'expert. Dans un rapport du 7 mai 1999, ce médecin a attesté, en effet, que seules des tâches nécessitant de gros efforts pouvaient entraîner une incapacité de travail de 50 %, infirmant ainsi l'avis du médecin traitant qui avait fait état d'un même taux d'incapacité déjà dans une activité adaptée dans les domaines de la manutention légère, la vente ou la réception.
Cela étant, les avis médicaux versés au dossier sont suffisants pour connaître l'empêchement découlant de l'atteinte au poignet droit, sans qu'il soit nécessaire de compléter l'instruction du cas en autorisant la recourante à produire un rapport médical complémentaire sur ce point. Par ailleurs, aucun des médecins qui se sont prononcés sur le cas n'ont fait état d'une quelconque atteinte à la santé psychique, de sorte qu'il n'est pas non plus nécessaire de faire droit à la demande de l'intéressée tendant à un complément d'instruction à ce sujet.
Vu ce qui précède, il n'y a pas lieu de s'écarter du point de vue des premiers juges qui ont conclu à l'existence d'une capacité résiduelle de travail de 65 % dans un travail léger avec activité répétitive.
Vu ce qui précède, il n'y a pas lieu de s'écarter du point de vue des premiers juges qui ont conclu à l'existence d'une capacité résiduelle de travail de 65 % dans un travail léger avec activité répétitive.
4. 4.1 Pour l'évaluation de l'invalidité, la juridiction cantonale a établi le revenu sans invalidité (28'924 fr.; valeur 1998 : 29'087 fr.) en additionnant le salaire obtenu en 1997 dans l'activité de blanchisseuse exercée à raison de 60 % d'un horaire de travail habituel (20'760 fr.) et le salaire perçu la même année dans l'activité de nettoyeuse exercée deux heures par jour (8'164 fr.). Elle a ensuite comparé ce revenu sans invalidité, correspondant au gain obtenu dans une activité exercée à 90 % (cf. consid. 2), au gain perçu dans une activité simple et répétitive exercée à raison d'un horaire complet.
Ce mode de procéder n'est pas correct. Avant de comparer les revenus déterminants, la juridiction cantonale devait au préalable établir le revenu d'invalide compte tenu d'un horaire complet, ce qui donne un montant 32'319 fr. (29'087 : 90 x 100).
4.2 Si l'on prend en considération le salaire auquel peuvent prétendre les femmes effectuant des activités simples et répétitives dans le secteur privé, à savoir, durant l'année - déterminante en l'occurrence (ATF 129 V 222, 128 V 174) - 1998, 3'505 fr. par mois, part au 13ème salaire comprise (Enquête suisse sur la structure des salaires 1998, TA 1; niveau de qualification 4), ce montant mensuel hypothétique représente, étant donné le fait que les salaires bruts standardisés sont fondés sur un horaire de travail de 40 heures, soit une durée hebdomadaire inférieure à la moyenne usuelle dans les entreprises en 1998 (41,9 heures; La Vie économique, 10/2004 p. 90, tableau B 9.2) un revenu de 3'671 fr. par mois, soit un revenu annuel brut de 44'052 fr. Compte tenu de la capacité de travail de 65 %, on obtient un montant annuel de 28'633 fr. En outre, si l'on prend en considération, au regard des circonstances du cas concret (cf. ATF 126 V 75) une déduction de 15 % sur le salaire tiré de statistiques, le revenu d'invalide est de 24'339 fr. (28'633 - [28'633 x 0,15]). Comparé au revenu sans invalidité de 32'319 fr., ce montant permet de fixer à 24,69 % le handicap dans l'activité lucrative ([32'319 - 24'339] x 100 : 32'319).
4.3 Vu ce qui précède, même en admettant un taux d'empêchement de 100 % dans l'activité au ménage, le taux d'invalidité (arrondi : cf. ATF 130 V 121) devrait être fixé à 32 % ([24,69 % x 0,9] + [100 % x 0,1] = 32,22 %), soit un taux insuffisant pour ouvrir droit à une rente d'invalidité (cf. art. 28 al. 1 LAI).
Cela étant, le jugement entrepris n'est pas critiquable dans son résultat et le recours se révèle mal fondé.
Par ces motifs, le Tribunal fédéral des assurances prononce:
Par ces motifs, le Tribunal fédéral des assurances prononce:
1. Le recours est rejeté.
1. Le recours est rejeté.
2. Il n'est pas perçu de frais de justice.
2. Il n'est pas perçu de frais de justice.
3. Le présent arrêt sera communiqué aux parties, au Tribunal cantonal des assurances sociales du canton de Genève et à l'Office fédéral des assurances sociales.
Lucerne, le 12 avril 2005
Au nom du Tribunal fédéral des assurances
Le Président de la IIe Chambre: Le Greffier: